• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/extensions/extension_api_unittest.h"
6 
7 #include "base/values.h"
8 #include "chrome/browser/extensions/extension_function_test_utils.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
11 #include "content/public/browser/web_contents.h"
12 #include "content/public/common/url_constants.h"
13 #include "extensions/browser/extension_function.h"
14 #include "extensions/common/extension.h"
15 #include "extensions/common/manifest.h"
16 #include "extensions/common/manifest_handlers/background_info.h"
17 
18 namespace utils = extension_function_test_utils;
19 
20 namespace extensions {
21 
ExtensionApiUnittest()22 ExtensionApiUnittest::ExtensionApiUnittest() : contents_(NULL) {
23 }
24 
~ExtensionApiUnittest()25 ExtensionApiUnittest::~ExtensionApiUnittest() {
26 }
27 
SetUp()28 void ExtensionApiUnittest::SetUp() {
29   BrowserWithTestWindowTest::SetUp();
30   extension_ = utils::CreateEmptyExtensionWithLocation(Manifest::UNPACKED);
31 }
32 
CreateBackgroundPage()33 void ExtensionApiUnittest::CreateBackgroundPage() {
34   if (!contents_) {
35     GURL url = BackgroundInfo::GetBackgroundURL(extension());
36     if (url.is_empty())
37       url = GURL(url::kAboutBlankURL);
38     AddTab(browser(), url);
39     contents_ = browser()->tab_strip_model()->GetActiveWebContents();
40   }
41 }
42 
RunFunctionAndReturnValue(UIThreadExtensionFunction * function,const std::string & args)43 scoped_ptr<base::Value> ExtensionApiUnittest::RunFunctionAndReturnValue(
44     UIThreadExtensionFunction* function, const std::string& args) {
45   function->set_extension(extension());
46   if (contents_)
47     function->SetRenderViewHost(contents_->GetRenderViewHost());
48   return scoped_ptr<base::Value>(
49       utils::RunFunctionAndReturnSingleResult(function, args, browser()));
50 }
51 
52 scoped_ptr<base::DictionaryValue>
RunFunctionAndReturnDictionary(UIThreadExtensionFunction * function,const std::string & args)53 ExtensionApiUnittest::RunFunctionAndReturnDictionary(
54     UIThreadExtensionFunction* function, const std::string& args) {
55   base::Value* value = RunFunctionAndReturnValue(function, args).release();
56   base::DictionaryValue* dict = NULL;
57 
58   if (value && !value->GetAsDictionary(&dict))
59     delete value;
60 
61   // We expect to either have successfuly retrieved a dictionary from the value,
62   // or the value to have been NULL.
63   EXPECT_TRUE(dict || !value);
64   return scoped_ptr<base::DictionaryValue>(dict);
65 }
66 
RunFunctionAndReturnList(UIThreadExtensionFunction * function,const std::string & args)67 scoped_ptr<base::ListValue> ExtensionApiUnittest::RunFunctionAndReturnList(
68     UIThreadExtensionFunction* function, const std::string& args) {
69   base::Value* value = RunFunctionAndReturnValue(function, args).release();
70   base::ListValue* list = NULL;
71 
72   if (value && !value->GetAsList(&list))
73     delete value;
74 
75   // We expect to either have successfuly retrieved a list from the value,
76   // or the value to have been NULL.
77   EXPECT_TRUE(list);
78   return scoped_ptr<base::ListValue>(list);
79 }
80 
RunFunctionAndReturnError(UIThreadExtensionFunction * function,const std::string & args)81 std::string ExtensionApiUnittest::RunFunctionAndReturnError(
82     UIThreadExtensionFunction* function, const std::string& args) {
83   function->set_extension(extension());
84   if (contents_)
85     function->SetRenderViewHost(contents_->GetRenderViewHost());
86   return utils::RunFunctionAndReturnError(function, args, browser());
87 }
88 
RunFunction(UIThreadExtensionFunction * function,const std::string & args)89 void ExtensionApiUnittest::RunFunction(
90     UIThreadExtensionFunction* function, const std::string& args) {
91   RunFunctionAndReturnValue(function, args);
92 }
93 
94 }  // namespace extensions
95