Home | History | Annotate | Download | only in file_manager
      1 // Copyright 2013 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 #ifndef CHROME_BROWSER_CHROMEOS_FILE_MANAGER_APP_INSTALLER_H_
      6 #define CHROME_BROWSER_CHROMEOS_FILE_MANAGER_APP_INSTALLER_H_
      7 
      8 #include <string>
      9 
     10 #include "base/memory/ref_counted.h"
     11 #include "chrome/browser/extensions/webstore_standalone_installer.h"
     12 
     13 namespace content {
     14 class WebContents;
     15 }  // namespace content
     16 
     17 namespace file_manager {
     18 
     19 // This class is used for installing apps and extensions suggested from the
     20 // Chrome Web Store for unsupported file types, inside Files.app.
     21 class AppInstaller : public extensions::WebstoreStandaloneInstaller {
     22  public:
     23   AppInstaller(content::WebContents* web_contents,
     24                const std::string& item_id,
     25                Profile* profile,
     26                bool silent_installation,
     27                const Callback& callback);
     28 
     29  protected:
     30   friend class base::RefCountedThreadSafe<AppInstaller>;
     31 
     32   virtual ~AppInstaller();
     33 
     34   void OnWebContentsDestroyed(content::WebContents* web_contents);
     35 
     36   // WebstoreStandaloneInstaller implementation.
     37   virtual bool CheckRequestorAlive() const OVERRIDE;
     38   virtual const GURL& GetRequestorURL() const OVERRIDE;
     39   virtual bool ShouldShowPostInstallUI() const OVERRIDE;
     40   virtual bool ShouldShowAppInstalledBubble() const OVERRIDE;
     41   virtual content::WebContents* GetWebContents() const OVERRIDE;
     42   virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
     43       const OVERRIDE;
     44   virtual bool CheckInlineInstallPermitted(
     45       const base::DictionaryValue& webstore_data,
     46       std::string* error) const OVERRIDE;
     47   virtual bool CheckRequestorPermitted(
     48       const base::DictionaryValue& webstore_data,
     49       std::string* error) const OVERRIDE;
     50 
     51  private:
     52   class WebContentsObserver;
     53 
     54   bool silent_installation_;
     55   Callback callback_;
     56   content::WebContents* web_contents_;
     57   scoped_ptr<WebContentsObserver> web_contents_observer_;
     58 
     59   DISALLOW_IMPLICIT_CONSTRUCTORS(AppInstaller);
     60 };
     61 
     62 }  // namespace file_manager
     63 
     64 #endif  // CHROME_BROWSER_CHROMEOS_FILE_MANAGER_APP_INSTALLER_H_
     65