Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 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_startup_installer.h"
      6 
      7 #include "chrome/browser/profiles/profile.h"
      8 #include "content/public/browser/web_contents.h"
      9 
     10 using content::WebContents;
     11 
     12 namespace extensions {
     13 
     14 WebstoreStartupInstaller::WebstoreStartupInstaller(
     15     const std::string& webstore_item_id,
     16     Profile* profile,
     17     bool show_prompt,
     18     const Callback& callback)
     19     : WebstoreStandaloneInstaller(
     20           webstore_item_id,
     21           profile,
     22           callback),
     23       show_prompt_(show_prompt),
     24       dummy_web_contents_(
     25           WebContents::Create(WebContents::CreateParams(profile))) {
     26 }
     27 
     28 WebstoreStartupInstaller::~WebstoreStartupInstaller() {}
     29 
     30 bool WebstoreStartupInstaller::CheckRequestorAlive() const {
     31   // Requestor is the command line, so it's always alive.
     32   return true;
     33 }
     34 
     35 const GURL& WebstoreStartupInstaller::GetRequestorURL() const {
     36   return dummy_requestor_url_;
     37 }
     38 
     39 scoped_ptr<ExtensionInstallPrompt::Prompt>
     40 WebstoreStartupInstaller::CreateInstallPrompt() const {
     41   scoped_ptr<ExtensionInstallPrompt::Prompt> prompt;
     42   if (show_prompt_)
     43     prompt.reset(new ExtensionInstallPrompt::Prompt(
     44         ExtensionInstallPrompt::INSTALL_PROMPT));
     45   return prompt.Pass();
     46 }
     47 
     48 scoped_ptr<ExtensionInstallPrompt> WebstoreStartupInstaller::CreateInstallUI() {
     49   // The WebContents passed to ExtensionInstallPrompt is used to find a parent
     50   // window for the dialog. This class uses a dummy WebContents and has no
     51   // associated browser window. Pass NULL so the dialog is placed in the middle
     52   // of the screen.
     53   return make_scoped_ptr(new ExtensionInstallPrompt(NULL));
     54 }
     55 
     56 bool WebstoreStartupInstaller::ShouldShowPostInstallUI() const {
     57   return false;
     58 }
     59 
     60 bool WebstoreStartupInstaller::ShouldShowAppInstalledBubble() const {
     61   return false;
     62 }
     63 
     64 WebContents* WebstoreStartupInstaller::GetWebContents() const {
     65   return dummy_web_contents_.get();
     66 }
     67 
     68 bool WebstoreStartupInstaller::CheckInlineInstallPermitted(
     69     const base::DictionaryValue& webstore_data,
     70     std::string* error) const {
     71   // Requestor is the command line: ignore the property set in the store
     72   // and always permit inline installs.
     73   *error = "";
     74   return true;
     75 }
     76 
     77 bool WebstoreStartupInstaller::CheckRequestorPermitted(
     78     const base::DictionaryValue& webstore_data,
     79     std::string* error) const {
     80   // Requestor is the command line: always treat it as trusted.
     81   *error = "";
     82   return true;
     83 }
     84 
     85 
     86 }  // namespace extensions
     87