Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: chrome/browser/policy/app_pack_updater.h

Issue 12189011: Split up chrome/browser/policy subdirectory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, add chrome/browser/chromeos/policy/OWNERS Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/external_provider_impl.cc ('k') | chrome/browser/policy/app_pack_updater.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/app_pack_updater.h
diff --git a/chrome/browser/policy/app_pack_updater.h b/chrome/browser/policy/app_pack_updater.h
deleted file mode 100644
index 4f45f635ac1cf661a9095623654358262c5e24f2..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/app_pack_updater.h
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_POLICY_APP_PACK_UPDATER_H_
-#define CHROME_BROWSER_POLICY_APP_PACK_UPDATER_H_
-
-#include <map>
-#include <set>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/compiler_specific.h"
-#include "base/files/file_path.h"
-#include "base/memory/weak_ptr.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "chrome/browser/extensions/updater/extension_downloader_delegate.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-
-class GURL;
-
-namespace extensions {
-class CrxInstaller;
-class ExtensionDownloader;
-class ExternalLoader;
-}
-
-namespace net {
-class URLRequestContextGetter;
-}
-
-namespace tracked_objects {
-class Location;
-}
-
-namespace policy {
-
-class AppPackExternalLoader;
-class EnterpriseInstallAttributes;
-
-// The AppPackUpdater manages a set of extensions that are configured via a
-// device policy to be locally cached and installed into the Demo user account
-// at login time.
-class AppPackUpdater : public content::NotificationObserver,
- public extensions::ExtensionDownloaderDelegate {
- public:
- // Callback to listen for updates to the screensaver extension's path.
- typedef base::Callback<void(const base::FilePath&)> ScreenSaverUpdateCallback;
-
- // Keys for the entries in the AppPack dictionary policy.
- static const char kExtensionId[];
- static const char kUpdateUrl[];
-
- // The |request_context| is used for the update checks.
- AppPackUpdater(net::URLRequestContextGetter* request_context,
- EnterpriseInstallAttributes* install_attributes);
- virtual ~AppPackUpdater();
-
- // Creates an extensions::ExternalLoader that will load the crx files
- // downloaded by the AppPackUpdater. This can be called at most once, and the
- // caller owns the returned value.
- extensions::ExternalLoader* CreateExternalLoader();
-
- // |callback| will be invoked whenever the screen saver extension's path
- // changes. It will be invoked "soon" after this call if a valid path already
- // exists. Subsequent calls will override the previous |callback|. A null
- // |callback| can be used to remove a previous callback.
- void SetScreenSaverUpdateCallback(const ScreenSaverUpdateCallback& callback);
-
- // If a user of one of the AppPack's extensions detects that the extension
- // is damaged then this method can be used to remove it from the cache and
- // retry to download it after a restart.
- void OnDamagedFileDetected(const base::FilePath& path);
-
- private:
- struct CacheEntry {
- std::string path;
- std::string cached_version;
- };
-
- // Maps an extension ID to its update URL.
- typedef std::map<std::string, std::string> PolicyEntryMap;
-
- // Maps an extension ID to a CacheEntry.
- typedef std::map<std::string, CacheEntry> CacheEntryMap;
-
- void Init();
-
- // content::NotificationObserver:
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE;
-
- // Loads the current policy and schedules a cache update.
- void LoadPolicy();
-
- // Starts a cache update check immediately.
- void CheckCacheNow();
-
- // Performs a cache update check on the blocking pool. |app_pack_updater| is
- // used to reply in the UI thread. |valid_ids| contains the list of IDs that
- // are currently configured by policy; anything else is invalid, and should
- // be removed from the cache. |valid_ids| is owned by the posted task.
- static void BlockingCheckCache(base::WeakPtr<AppPackUpdater> app_pack_updater,
- const std::set<std::string>* valid_ids);
-
- // Helper for BlockingCheckCache().
- static void BlockingCheckCacheInternal(
- const std::set<std::string>* valid_ids,
- CacheEntryMap* entries);
-
- // Invoked when the cache has been updated. |cache_entries| contains all the
- // currently valid crx files in the cache, and is owned by the posted task.
- void OnCacheUpdated(CacheEntryMap* cache_entries);
-
- // Notifies the |extension_loader_| that the cache has been updated, providing
- // it with an updated list of app-pack extensions.
- void UpdateExtensionLoader();
-
- // Schedules downloads of all the extensions that are currently configured
- // by the policy but missing in the cache.
- void DownloadMissingExtensions();
-
- // Implementation of ExtensionDownloaderDelegate:
-
- virtual void OnExtensionDownloadFailed(
- const std::string& id,
- Error error,
- const PingResult& ping_result,
- const std::set<int>& request_ids) OVERRIDE;
-
- virtual void OnExtensionDownloadFinished(
- const std::string& id,
- const base::FilePath& path,
- const GURL& download_url,
- const std::string& version,
- const PingResult& ping_result,
- const std::set<int>& request_ids) OVERRIDE;
-
- virtual void OnBlacklistDownloadFinished(
- const std::string& data,
- const std::string& package_hash,
- const std::string& version,
- const PingResult& ping_result,
- const std::set<int>& request_ids) OVERRIDE;
-
- virtual bool IsExtensionPending(const std::string& id) OVERRIDE;
-
- virtual bool GetExtensionExistingVersion(const std::string& id,
- std::string* version) OVERRIDE;
-
- // Invoked to install the downloaded crx file at |path| in the AppPack cache.
- static void BlockingInstallCacheEntry(
- base::WeakPtr<AppPackUpdater> app_pack_updater,
- const std::string& id,
- const base::FilePath& path,
- const std::string& version);
-
- // Invoked on the UI thread when a new AppPack entry has been installed in
- // the AppPack cache.
- void OnCacheEntryInstalled(const std::string& id,
- const std::string& path,
- const std::string& version);
-
- // Handles failure to install CRX files. The file is deleted if it came from
- // the cache.
- void OnCrxInstallFailed(extensions::CrxInstaller* installer);
-
- // Helper to post blocking IO tasks to the blocking pool.
- void PostBlockingTask(const tracked_objects::Location& from_here,
- const base::Closure& task);
-
- // Sets |screen_saver_path_| and invokes |screen_saver_update_callback_| if
- // appropriate.
- void SetScreenSaverPath(const base::FilePath& path);
-
- base::WeakPtrFactory<AppPackUpdater> weak_ptr_factory_;
-
- // Observes failures to install CRX files.
- content::NotificationRegistrar notification_registrar_;
-
- // Unique sequence token so that tasks posted by the AppPackUpdater are
- // executed sequentially in the blocking pool.
- base::SequencedWorkerPool::SequenceToken worker_pool_token_;
-
- // Whether the updater has initialized. This is only done if the device is in
- // kiosk mode and the app pack policy is present.
- bool initialized_;
-
- // This is the list of extensions currently configured by the policy.
- PolicyEntryMap app_pack_extensions_;
-
- // This contains extensions that are both currently configured by the policy
- // and that have a valid crx in the cache.
- CacheEntryMap cached_extensions_;
-
- // The extension ID and path of the CRX file of the screen saver extension,
- // if it is configured by the policy. Otherwise these fields are empty.
- std::string screen_saver_id_;
- base::FilePath screen_saver_path_;
-
- // Callback to invoke whenever the screen saver's extension path changes.
- // Can be null.
- ScreenSaverUpdateCallback screen_saver_update_callback_;
-
- // The extension loader wires the AppPackUpdater to the extensions system, and
- // makes it install the currently cached extensions.
- bool created_extension_loader_;
- base::WeakPtr<AppPackExternalLoader> extension_loader_;
-
- // Used to download the extensions configured via policy, and to check for
- // updates.
- scoped_ptr<extensions::ExtensionDownloader> downloader_;
-
- // Request context used by the |downloader_|.
- net::URLRequestContextGetter* request_context_;
-
- // For checking the device mode.
- EnterpriseInstallAttributes* install_attributes_;
-
- DISALLOW_COPY_AND_ASSIGN(AppPackUpdater);
-};
-
-} // namespace policy
-
-#endif // CHROME_BROWSER_POLICY_APP_PACK_UPDATER_H_
« no previous file with comments | « chrome/browser/extensions/external_provider_impl.cc ('k') | chrome/browser/policy/app_pack_updater.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698