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/extensions/install_observer.h"
15 #include "chrome/common/web_application_info.h"
16 #include "components/drive/drive_app_registry.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_