Chromium Code Reviews| Index: chrome/browser/extensions/webstore_install_prompt.cc |
| diff --git a/chrome/browser/extensions/webstore_install_prompt.cc b/chrome/browser/extensions/webstore_install_prompt.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..49709d89db516409b673f3e503fd764447608ff1 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/webstore_install_prompt.cc |
| @@ -0,0 +1,108 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/extensions/webstore_install_prompt.h" |
| + |
| +#include "chrome/browser/extensions/webstore_installer.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| +#include "content/public/browser/web_contents.h" |
| + |
| +using content::WebContents; |
| + |
| +namespace extensions { |
| + |
| +WebstoreInstallPrompt::WebstoreInstallPrompt( |
| + const std::string& webstore_item_id, |
| + Profile* profile, |
| + const Callback& callback) |
| + : WebstoreStandaloneInstaller(webstore_item_id, profile, callback), |
| + dummy_web_contents_( |
| + WebContents::Create(WebContents::CreateParams(profile))), |
| + parent_window_(NULL) { |
| + set_install_source(WebstoreInstaller::INSTALL_SOURCE_OTHER); |
| +} |
| + |
| +WebstoreInstallPrompt::WebstoreInstallPrompt( |
| + const std::string& webstore_item_id, |
| + Profile* profile, |
| + gfx::NativeWindow parent_window, |
| + const Callback& callback) |
| + : WebstoreStandaloneInstaller(webstore_item_id, profile, callback), |
| + dummy_web_contents_( |
| + WebContents::Create(WebContents::CreateParams(profile))), |
| + parent_window_(parent_window) { |
| + set_install_source(WebstoreInstaller::INSTALL_SOURCE_OTHER); |
|
tapted
2014/05/28 06:28:46
since it's a separate constructor, maybe DCHECK(pa
|
| +} |
| + |
| +WebstoreInstallPrompt::~WebstoreInstallPrompt() { |
| +} |
| + |
| +bool WebstoreInstallPrompt::CheckRequestorAlive() const { |
| + // Assume the requestor is always alive. |
| + return true; |
| +} |
| + |
| +const GURL& WebstoreInstallPrompt::GetRequestorURL() const { |
| + return dummy_requestor_url_; |
| +} |
| + |
| +scoped_ptr<ExtensionInstallPrompt::Prompt> |
| +WebstoreInstallPrompt::CreateInstallPrompt() const { |
| + scoped_ptr<ExtensionInstallPrompt::Prompt> prompt( |
| + new ExtensionInstallPrompt::Prompt( |
| + ExtensionInstallPrompt::INSTALL_PROMPT)); |
| + return prompt.Pass(); |
| +} |
| + |
| +scoped_ptr<ExtensionInstallPrompt> WebstoreInstallPrompt::CreateInstallUI() { |
| + // Create an ExtensionInstallPrompt with a parent window. |
| + if (parent_window_) { |
| + return make_scoped_ptr( |
| + new ExtensionInstallPrompt(profile(), parent_window_, this)); |
| + } |
| + |
| + // The WebContents passed to ExtensionInstallPrompt is used to find a parent |
| + // window for the dialog. If there is no associated parent native window, pass |
| + // NULL so the dialog is placed in the middle of the screen. |
| + return make_scoped_ptr(new ExtensionInstallPrompt(NULL)); |
|
tapted
2014/05/28 06:28:46
I'm not sure this is safe.. it looks like passing
tmdiep
2014/05/28 08:39:27
Ugh. Using the ExtensionInstallPrompt(content::Web
|
| +} |
| + |
| +bool WebstoreInstallPrompt::ShouldShowPostInstallUI() const { |
| + return false; |
| +} |
| + |
| +bool WebstoreInstallPrompt::ShouldShowAppInstalledBubble() const { |
| + return false; |
| +} |
| + |
| +WebContents* WebstoreInstallPrompt::GetWebContents() const { |
| + return dummy_web_contents_.get(); |
| +} |
| + |
| +bool WebstoreInstallPrompt::CheckInlineInstallPermitted( |
| + const base::DictionaryValue& webstore_data, |
| + std::string* error) const { |
| + // Assume the requestor is trusted. |
| + *error = ""; |
|
tapted
2014/05/28 06:28:46
nit: "" -> std::string() (doesn't malloc a 1-byte
|
| + return true; |
| +} |
| + |
| +bool WebstoreInstallPrompt::CheckRequestorPermitted( |
| + const base::DictionaryValue& webstore_data, |
| + std::string* error) const { |
| + // Assume the requestor is trusted. |
| + *error = ""; |
|
tapted
2014/05/28 06:28:46
std::string()
|
| + return true; |
| +} |
| + |
| +content::WebContents* WebstoreInstallPrompt::OpenURL( |
| + const content::OpenURLParams& params) { |
| + chrome::ScopedTabbedBrowserDisplayer displayer(profile(), |
| + chrome::GetActiveDesktop()); |
| + return displayer.browser()->OpenURL(params); |
| +} |
| + |
| +} // namespace extensions |