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.
5 #ifndef CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_CONVERTER_H_
6 #define CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_CONVERTER_H_
10 #include "base/callback.h"
11 #include "base/macros.h"
12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_vector.h"
14 #include "chrome/browser/drive/drive_app_registry.h"
15 #include "chrome/browser/extensions/install_observer.h"
16 #include "chrome/common/web_application_info.h"
20 namespace extensions {
25 // DriveAppConverter creates and installs a local URL app for the given
26 // DriveAppInfo into the given profile.
27 class DriveAppConverter : public extensions::InstallObserver {
29 typedef base::Callback<void(const DriveAppConverter*, bool success)>
32 DriveAppConverter(Profile* profile,
33 const drive::DriveAppInfo& drive_app_info,
34 const FinishedCallback& finished_callback);
35 ~DriveAppConverter() override;
38 bool IsStarted() const;
40 bool IsInstalling(const std::string& app_id) const;
42 const drive::DriveAppInfo& drive_app_info() const { return drive_app_info_; }
43 const extensions::Extension* extension() const { return extension_; }
44 bool is_new_install() const { return is_new_install_; }
49 // Callbacks from IconFetcher.
50 void OnIconFetchComplete(const IconFetcher* fetcher);
53 void PostInstallCleanUp();
55 // extensions::InstallObserver:
56 void OnFinishCrxInstall(const std::string& extension_id,
57 bool success) override;
60 const drive::DriveAppInfo drive_app_info_;
62 WebApplicationInfo web_app_;
63 const extensions::Extension* extension_;
66 ScopedVector<IconFetcher> fetchers_;
67 scoped_refptr<extensions::CrxInstaller> crx_installer_;
69 FinishedCallback finished_callback_;
71 DISALLOW_COPY_AND_ASSIGN(DriveAppConverter);
74 #endif // CHROME_BROWSER_APPS_DRIVE_DRIVE_APP_CONVERTER_H_