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/webstore_install_with_prompt.h" 6 7 #include "chrome/browser/extensions/webstore_installer.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" 11 #include "content/public/browser/web_contents.h" 12 13 using content::WebContents; 14 15 namespace extensions { 16 17 WebstoreInstallWithPrompt::WebstoreInstallWithPrompt( 18 const std::string& webstore_item_id, 19 Profile* profile, 20 const Callback& callback) 21 : WebstoreStandaloneInstaller(webstore_item_id, profile, callback), 22 dummy_web_contents_( 23 WebContents::Create(WebContents::CreateParams(profile))), 24 parent_window_(NULL) { 25 set_install_source(WebstoreInstaller::INSTALL_SOURCE_OTHER); 26 } 27 28 WebstoreInstallWithPrompt::WebstoreInstallWithPrompt( 29 const std::string& webstore_item_id, 30 Profile* profile, 31 gfx::NativeWindow parent_window, 32 const Callback& callback) 33 : WebstoreStandaloneInstaller(webstore_item_id, profile, callback), 34 dummy_web_contents_( 35 WebContents::Create(WebContents::CreateParams(profile))), 36 parent_window_(parent_window) { 37 DCHECK(parent_window); 38 set_install_source(WebstoreInstaller::INSTALL_SOURCE_OTHER); 39 } 40 41 WebstoreInstallWithPrompt::~WebstoreInstallWithPrompt() { 42 } 43 44 bool WebstoreInstallWithPrompt::CheckRequestorAlive() const { 45 // Assume the requestor is always alive. 46 return true; 47 } 48 49 const GURL& WebstoreInstallWithPrompt::GetRequestorURL() const { 50 return dummy_requestor_url_; 51 } 52 53 scoped_refptr<ExtensionInstallPrompt::Prompt> 54 WebstoreInstallWithPrompt::CreateInstallPrompt() const { 55 return new ExtensionInstallPrompt::Prompt( 56 ExtensionInstallPrompt::INSTALL_PROMPT); 57 } 58 59 scoped_ptr<ExtensionInstallPrompt> 60 WebstoreInstallWithPrompt::CreateInstallUI() { 61 // Create an ExtensionInstallPrompt. If the parent window is NULL, the dialog 62 // will be placed in the middle of the screen. 63 return make_scoped_ptr( 64 new ExtensionInstallPrompt(profile(), parent_window_, this)); 65 } 66 67 bool WebstoreInstallWithPrompt::ShouldShowPostInstallUI() const { 68 return false; 69 } 70 71 bool WebstoreInstallWithPrompt::ShouldShowAppInstalledBubble() const { 72 return false; 73 } 74 75 WebContents* WebstoreInstallWithPrompt::GetWebContents() const { 76 return dummy_web_contents_.get(); 77 } 78 79 bool WebstoreInstallWithPrompt::CheckInlineInstallPermitted( 80 const base::DictionaryValue& webstore_data, 81 std::string* error) const { 82 // Assume the requestor is trusted. 83 *error = std::string(); 84 return true; 85 } 86 87 bool WebstoreInstallWithPrompt::CheckRequestorPermitted( 88 const base::DictionaryValue& webstore_data, 89 std::string* error) const { 90 // Assume the requestor is trusted. 91 *error = std::string(); 92 return true; 93 } 94 95 content::WebContents* WebstoreInstallWithPrompt::OpenURL( 96 const content::OpenURLParams& params) { 97 chrome::ScopedTabbedBrowserDisplayer displayer(profile(), 98 chrome::GetActiveDesktop()); 99 return displayer.browser()->OpenURL(params); 100 } 101 102 } // namespace extensions 103