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