OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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_infobar_module.h" | |
6 | |
7 #include "base/string_number_conversions.h" | |
8 #include "base/string_util.h" | |
9 #include "base/values.h" | |
10 #include "chrome/browser/extensions/extension_host.h" | |
11 #include "chrome/browser/extensions/extension_infobar_delegate.h" | |
12 #include "chrome/browser/extensions/extension_infobar_module_constants.h" | |
13 #include "chrome/browser/extensions/extension_tab_util.h" | |
14 #include "chrome/browser/extensions/extension_tabs_module_constants.h" | |
15 #include "chrome/browser/infobars/infobar_tab_helper.h" | |
16 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" | |
17 #include "chrome/browser/ui/browser.h" | |
18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | |
19 #include "chrome/common/extensions/extension.h" | |
20 #include "chrome/common/extensions/extension_error_utils.h" | |
21 #include "chrome/common/url_constants.h" | |
22 #include "content/browser/tab_contents/tab_contents.h" | |
23 #include "grit/generated_resources.h" | |
24 | |
25 namespace keys = extension_infobar_module_constants; | |
26 | |
27 bool ShowInfoBarFunction::RunImpl() { | |
28 DictionaryValue* args; | |
29 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &args)); | |
30 | |
31 int tab_id; | |
32 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kTabId, &tab_id)); | |
33 | |
34 std::string html_path; | |
35 EXTENSION_FUNCTION_VALIDATE(args->GetString(keys::kHtmlPath, &html_path)); | |
36 | |
37 int height = 0; | |
38 if (args->HasKey(keys::kHeight)) | |
39 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kHeight, &height)); | |
40 | |
41 const Extension* extension = GetExtension(); | |
42 GURL url = extension->GetResourceURL(extension->url(), html_path); | |
43 | |
44 Browser* browser = NULL; | |
45 TabContentsWrapper* tab_contents = NULL; | |
46 if (!ExtensionTabUtil::GetTabById( | |
47 tab_id, | |
48 profile(), | |
49 include_incognito(), | |
50 &browser, | |
51 NULL, | |
52 &tab_contents, | |
53 NULL)) { | |
54 error_ = ExtensionErrorUtils::FormatErrorMessage( | |
55 extension_tabs_module_constants::kTabNotFoundError, | |
56 base::IntToString(tab_id)); | |
57 return false; | |
58 } | |
59 | |
60 tab_contents->infobar_tab_helper()->AddInfoBar( | |
61 new ExtensionInfoBarDelegate(browser, tab_contents->infobar_tab_helper(), | |
62 GetExtension(), url, height)); | |
63 | |
64 // TODO(finnur): Return the actual DOMWindow object. Bug 26463. | |
65 result_.reset(ExtensionTabUtil::CreateWindowValue(browser, false)); | |
66 | |
67 return true; | |
68 } | |
OLD | NEW |