diff options
author | sail@chromium.org <sail@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-21 23:03:05 +0000 |
---|---|---|
committer | sail@chromium.org <sail@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-21 23:03:05 +0000 |
commit | 91e51d61689bb86daaaed223f5344b0d389eae65 (patch) | |
tree | 68e3dec431799c58d7ec3cf2c507a5757f23626f /chrome/browser/extensions/extension_install_prompt.cc | |
parent | 80737d4ce4cc5bd882e3328aac3d2bfa69487d2a (diff) | |
download | chromium_src-91e51d61689bb86daaaed223f5344b0d389eae65.zip chromium_src-91e51d61689bb86daaaed223f5344b0d389eae65.tar.gz chromium_src-91e51d61689bb86daaaed223f5344b0d389eae65.tar.bz2 |
Have ExtensionInstallPrompt take a WebContents
This CL implements a long standing TODO to change ExtensionInstallPrompt to take WebContents instead of a Browser.
This also fixes bug 156248 which I caused in r161479.
BUG=156248
Review URL: https://codereview.chromium.org/11184029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163215 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_install_prompt.cc')
-rw-r--r-- | chrome/browser/extensions/extension_install_prompt.cc | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc index 3b49699..fe6ce49 100644 --- a/chrome/browser/extensions/extension_install_prompt.cc +++ b/chrome/browser/extensions/extension_install_prompt.cc @@ -32,7 +32,7 @@ #include "chrome/common/extensions/permissions/permission_set.h" #include "chrome/common/extensions/url_pattern.h" #include "chrome/common/pref_names.h" -#include "content/public/browser/page_navigator.h" +#include "content/public/browser/web_contents.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" @@ -159,6 +159,12 @@ bool AutoConfirmPrompt(ExtensionInstallPrompt::Delegate* delegate) { return false; } +Profile* ProfileForWebContents(content::WebContents* web_contents) { + if (!web_contents) + return NULL; + return Profile::FromBrowserContext(web_contents->GetBrowserContext()); +} + } // namespace ExtensionInstallPrompt::Prompt::Prompt(Profile* profile, PromptType type) @@ -363,17 +369,14 @@ scoped_refptr<Extension> } ExtensionInstallPrompt::ExtensionInstallPrompt( - gfx::NativeWindow parent, - content::PageNavigator* navigator, - Profile* profile) + content::WebContents* contents) : record_oauth2_grant_(false), - parent_(parent), - navigator_(navigator), + parent_web_contents_(contents), ui_loop_(MessageLoop::current()), extension_(NULL), - install_ui_(ExtensionInstallUI::Create(profile)), + install_ui_(ExtensionInstallUI::Create(ProfileForWebContents(contents))), delegate_(NULL), - prompt_(profile, UNSET_PROMPT_TYPE), + prompt_(ProfileForWebContents(contents), UNSET_PROMPT_TYPE), prompt_type_(UNSET_PROMPT_TYPE), ALLOW_THIS_IN_INITIALIZER_LIST(tracker_(this)) { } @@ -630,22 +633,10 @@ void ExtensionInstallPrompt::ShowConfirmation() { if (AutoConfirmPrompt(delegate_)) return; - if (show_dialog_callback_.is_null()) - GetDefaultShowDialogCallback().Run(parent_, navigator_, delegate_, prompt_); - else - show_dialog_callback_.Run(parent_, navigator_, delegate_, prompt_); -} - -namespace chrome { - -ExtensionInstallPrompt* CreateExtensionInstallPromptWithBrowser( - Browser* browser) { - // |browser| can be NULL in unit tests. - if (!browser) - return new ExtensionInstallPrompt(NULL, NULL, NULL); - gfx::NativeWindow parent = - browser->window() ? browser->window()->GetNativeWindow() : NULL; - return new ExtensionInstallPrompt(parent, browser, browser->profile()); + if (show_dialog_callback_.is_null()) { + GetDefaultShowDialogCallback().Run( + parent_web_contents_, delegate_, prompt_); + } else { + show_dialog_callback_.Run(parent_web_contents_, delegate_, prompt_); + } } - -} // namespace chrome |