Index: chrome/browser/extensions/webstore_install_with_prompt.cc |
diff --git a/chrome/browser/extensions/webstore_install_with_prompt.cc b/chrome/browser/extensions/webstore_install_with_prompt.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a43388fe142def24eaec57dbc3c4df9ea426cb7 |
--- /dev/null |
+++ b/chrome/browser/extensions/webstore_install_with_prompt.cc |
@@ -0,0 +1,104 @@ |
+// 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_with_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 { |
+ |
+WebstoreInstallWithPrompt::WebstoreInstallWithPrompt( |
+ 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); |
+} |
+ |
+WebstoreInstallWithPrompt::WebstoreInstallWithPrompt( |
+ 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) { |
+ DCHECK(parent_window); |
+ set_install_source(WebstoreInstaller::INSTALL_SOURCE_OTHER); |
+} |
+ |
+WebstoreInstallWithPrompt::~WebstoreInstallWithPrompt() { |
+} |
+ |
+bool WebstoreInstallWithPrompt::CheckRequestorAlive() const { |
+ // Assume the requestor is always alive. |
+ return true; |
+} |
+ |
+const GURL& WebstoreInstallWithPrompt::GetRequestorURL() const { |
+ return dummy_requestor_url_; |
+} |
+ |
+scoped_ptr<ExtensionInstallPrompt::Prompt> |
+WebstoreInstallWithPrompt::CreateInstallPrompt() const { |
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt( |
+ new ExtensionInstallPrompt::Prompt( |
+ ExtensionInstallPrompt::INSTALL_PROMPT)); |
+ return prompt.Pass(); |
+} |
+ |
+scoped_ptr<ExtensionInstallPrompt> |
+WebstoreInstallWithPrompt::CreateInstallUI() { |
+ // Create an ExtensionInstallPrompt. If the parent window is NULL, the dialog |
+ // will be placed in the middle of the screen. |
+ return make_scoped_ptr( |
+ new ExtensionInstallPrompt(profile(), parent_window_, this)); |
+} |
+ |
+bool WebstoreInstallWithPrompt::ShouldShowPostInstallUI() const { |
+ return false; |
+} |
+ |
+bool WebstoreInstallWithPrompt::ShouldShowAppInstalledBubble() const { |
+ return false; |
+} |
+ |
+WebContents* WebstoreInstallWithPrompt::GetWebContents() const { |
+ return dummy_web_contents_.get(); |
+} |
+ |
+bool WebstoreInstallWithPrompt::CheckInlineInstallPermitted( |
+ const base::DictionaryValue& webstore_data, |
+ std::string* error) const { |
+ // Assume the requestor is trusted. |
+ *error = std::string(); |
+ return true; |
+} |
+ |
+bool WebstoreInstallWithPrompt::CheckRequestorPermitted( |
+ const base::DictionaryValue& webstore_data, |
+ std::string* error) const { |
+ // Assume the requestor is trusted. |
+ *error = std::string(); |
+ return true; |
+} |
+ |
+content::WebContents* WebstoreInstallWithPrompt::OpenURL( |
+ const content::OpenURLParams& params) { |
+ chrome::ScopedTabbedBrowserDisplayer displayer(profile(), |
+ chrome::GetActiveDesktop()); |
+ return displayer.browser()->OpenURL(params); |
+} |
+ |
+} // namespace extensions |