Home | History | Annotate | Download | only in extensions
      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