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

Unified Diff: chrome/browser/chromeos/policy/app_pack_updater.cc

Issue 608283003: Remove retail mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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
Index: chrome/browser/chromeos/policy/app_pack_updater.cc
diff --git a/chrome/browser/chromeos/policy/app_pack_updater.cc b/chrome/browser/chromeos/policy/app_pack_updater.cc
deleted file mode 100644
index 60176782e3c544034fe097858db74c79fca2db9b..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/policy/app_pack_updater.cc
+++ /dev/null
@@ -1,218 +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.
-
-#include "chrome/browser/chromeos/policy/app_pack_updater.h"
-
-#include "base/bind.h"
-#include "base/memory/ref_counted.h"
-#include "base/sequenced_task_runner.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/extensions/external_loader.h"
-#include "chrome/browser/extensions/external_provider_impl.h"
-#include "chromeos/settings/cros_settings_names.h"
-#include "content/public/browser/browser_thread.h"
-
-using content::BrowserThread;
-
-namespace policy {
-
-namespace {
-
-// Directory where the AppPack extensions are cached.
-const char kAppPackCacheDir[] = "/var/cache/app_pack";
-
-} // namespace
-
-// A custom extensions::ExternalLoader that the AppPackUpdater creates and uses
-// to publish AppPack updates to the extensions system.
-class AppPackExternalLoader
- : public extensions::ExternalLoader,
- public base::SupportsWeakPtr<AppPackExternalLoader> {
- public:
- AppPackExternalLoader() {}
-
- // Used by the AppPackUpdater to update the current list of extensions.
- // The format of |prefs| is detailed in the extensions::ExternalLoader/
- // Provider headers.
- void SetCurrentAppPackExtensions(scoped_ptr<base::DictionaryValue> prefs) {
- app_pack_prefs_.Swap(prefs.get());
- StartLoading();
- }
-
- // Implementation of extensions::ExternalLoader:
- virtual void StartLoading() override {
- prefs_.reset(app_pack_prefs_.DeepCopy());
- VLOG(1) << "AppPack extension loader publishing "
- << app_pack_prefs_.size() << " crx files.";
- LoadFinished();
- }
-
- protected:
- virtual ~AppPackExternalLoader() {}
-
- private:
- base::DictionaryValue app_pack_prefs_;
-
- DISALLOW_COPY_AND_ASSIGN(AppPackExternalLoader);
-};
-
-AppPackUpdater::AppPackUpdater(net::URLRequestContextGetter* request_context,
- EnterpriseInstallAttributes* install_attributes)
- : created_extension_loader_(false),
- install_attributes_(install_attributes),
- external_cache_(base::FilePath(kAppPackCacheDir),
- request_context,
- content::BrowserThread::GetBlockingPool()->
- GetSequencedTaskRunnerWithShutdownBehavior(
- content::BrowserThread::GetBlockingPool()->
- GetSequenceToken(),
- base::SequencedWorkerPool::SKIP_ON_SHUTDOWN),
- this,
- false,
- false),
- weak_ptr_factory_(this) {
- app_pack_subscription_ = chromeos::CrosSettings::Get()->AddSettingsObserver(
- chromeos::kAppPack,
- base::Bind(&AppPackUpdater::AppPackChanged, base::Unretained(this)));
-
- if (install_attributes_->GetMode() == DEVICE_MODE_RETAIL_KIOSK) {
- // Already in Kiosk mode, start loading.
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&AppPackUpdater::LoadPolicy,
- weak_ptr_factory_.GetWeakPtr()));
- } else {
- // Linger until the device switches to DEVICE_MODE_RETAIL_KIOSK and the
- // app pack device setting appears.
- }
-}
-
-AppPackUpdater::~AppPackUpdater() {
-}
-
-extensions::ExternalLoader* AppPackUpdater::CreateExternalLoader() {
- if (created_extension_loader_) {
- NOTREACHED();
- return NULL;
- }
- created_extension_loader_ = true;
- AppPackExternalLoader* loader = new AppPackExternalLoader();
- extension_loader_ = loader->AsWeakPtr();
-
- // The cache may have been already checked. In that case, load the current
- // extensions into the loader immediately.
- UpdateExtensionLoader();
-
- return loader;
-}
-
-void AppPackUpdater::SetScreenSaverUpdateCallback(
- const AppPackUpdater::ScreenSaverUpdateCallback& callback) {
- screen_saver_update_callback_ = callback;
- if (!screen_saver_update_callback_.is_null() && !screen_saver_path_.empty()) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(screen_saver_update_callback_, screen_saver_path_));
- }
-}
-
-void AppPackUpdater::AppPackChanged() {
- if (install_attributes_->GetMode() == DEVICE_MODE_RETAIL_KIOSK)
- LoadPolicy();
-}
-
-void AppPackUpdater::LoadPolicy() {
- chromeos::CrosSettings* settings = chromeos::CrosSettings::Get();
- if (chromeos::CrosSettingsProvider::TRUSTED != settings->PrepareTrustedValues(
- base::Bind(&AppPackUpdater::LoadPolicy,
- weak_ptr_factory_.GetWeakPtr()))) {
- return;
- }
-
- scoped_ptr<base::DictionaryValue> prefs(new base::DictionaryValue());
- const base::Value* value = settings->GetPref(chromeos::kAppPack);
- const base::ListValue* list = NULL;
- if (value && value->GetAsList(&list)) {
- for (base::ListValue::const_iterator it = list->begin();
- it != list->end(); ++it) {
- base::DictionaryValue* dict = NULL;
- if (!(*it)->GetAsDictionary(&dict)) {
- LOG(WARNING) << "AppPack entry is not a dictionary, ignoring.";
- continue;
- }
- std::string id;
- std::string update_url;
- if (dict->GetString(chromeos::kAppPackKeyExtensionId, &id) &&
- dict->GetString(chromeos::kAppPackKeyUpdateUrl, &update_url)) {
- base::DictionaryValue* entry = new base::DictionaryValue();
- entry->SetString(extensions::ExternalProviderImpl::kExternalUpdateUrl,
- update_url);
- prefs->Set(id, entry);
- } else {
- LOG(WARNING) << "Failed to read required fields for an AppPack entry, "
- << "ignoring.";
- }
- }
- }
-
- VLOG(1) << "Refreshed AppPack policy, got " << prefs->size()
- << " entries.";
-
- value = settings->GetPref(chromeos::kScreenSaverExtensionId);
- if (!value || !value->GetAsString(&screen_saver_id_)) {
- screen_saver_id_.clear();
- SetScreenSaverPath(base::FilePath());
- }
-
- external_cache_.UpdateExtensionsList(prefs.Pass());
-}
-
-void AppPackUpdater::OnExtensionListsUpdated(
- const base::DictionaryValue* prefs) {
- std::string crx_path;
- const base::DictionaryValue* screen_saver = NULL;
- if (prefs->GetDictionary(screen_saver_id_, &screen_saver)) {
- screen_saver->GetString(extensions::ExternalProviderImpl::kExternalCrx,
- &crx_path);
- }
- if (!crx_path.empty())
- SetScreenSaverPath(base::FilePath(crx_path));
- else
- SetScreenSaverPath(base::FilePath());
-
- UpdateExtensionLoader();
-}
-
-void AppPackUpdater::UpdateExtensionLoader() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (!extension_loader_) {
- VLOG(1) << "No AppPack loader created yet, not pushing extensions.";
- return;
- }
-
- scoped_ptr<base::DictionaryValue> prefs(
- external_cache_.cached_extensions()->DeepCopy());
-
- // The screensaver isn't installed into the Profile.
- prefs->Remove(screen_saver_id_, NULL);
-
- extension_loader_->SetCurrentAppPackExtensions(prefs.Pass());
-}
-
-void AppPackUpdater::OnDamagedFileDetected(const base::FilePath& path) {
- external_cache_.OnDamagedFileDetected(path);
-}
-
-void AppPackUpdater::SetScreenSaverPath(const base::FilePath& path) {
- // Don't invoke the callback if the path isn't changing.
- if (path != screen_saver_path_) {
- screen_saver_path_ = path;
- if (!screen_saver_update_callback_.is_null())
- screen_saver_update_callback_.Run(screen_saver_path_);
- }
-}
-
-} // namespace policy
« no previous file with comments | « chrome/browser/chromeos/policy/app_pack_updater.h ('k') | chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698