Switch global error menu icon to vectorized MD asset
[chromium-blink-merge.git] / chrome / browser / apps / drive / drive_app_converter.h
blob777e5b63a25a7d497ba5be06ef0be40adeee29db
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_
8 #include <string>
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"
18 class Profile;
20 namespace extensions {
21 class CrxInstaller;
22 class Extension;
25 // DriveAppConverter creates and installs a local URL app for the given
26 // DriveAppInfo into the given profile.
27 class DriveAppConverter : public extensions::InstallObserver {
28 public:
29 typedef base::Callback<void(const DriveAppConverter*, bool success)>
30 FinishedCallback;
32 DriveAppConverter(Profile* profile,
33 const drive::DriveAppInfo& drive_app_info,
34 const FinishedCallback& finished_callback);
35 ~DriveAppConverter() override;
37 void Start();
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_; }
46 private:
47 class IconFetcher;
49 // Callbacks from IconFetcher.
50 void OnIconFetchComplete(const IconFetcher* fetcher);
52 void StartInstall();
53 void PostInstallCleanUp();
55 // extensions::InstallObserver:
56 void OnFinishCrxInstall(const std::string& extension_id,
57 bool success) override;
59 Profile* profile_;
60 const drive::DriveAppInfo drive_app_info_;
62 WebApplicationInfo web_app_;
63 const extensions::Extension* extension_;
64 bool is_new_install_;
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_