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

Unified Diff: chrome/browser/chromeos/legacy_retail_mode_detector.cc

Issue 608283003: Remove retail mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/legacy_retail_mode_detector.cc
diff --git a/chrome/browser/chromeos/legacy_retail_mode_detector.cc b/chrome/browser/chromeos/legacy_retail_mode_detector.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7f3d568a8a0595938dff62976005a87a90084358
--- /dev/null
+++ b/chrome/browser/chromeos/legacy_retail_mode_detector.cc
@@ -0,0 +1,91 @@
+// 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/legacy_retail_mode_detector.h"
+
+#include "base/bind.h"
+#include "base/command_line.h"
+#include "base/lazy_instance.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/settings/device_settings_service.h"
+#include "chrome/browser/lifetime/application_lifetime.h"
+#include "chromeos/chromeos_switches.h"
+#include "components/policy/core/common/cloud/cloud_policy_constants.h"
+#include "content/public/browser/browser_thread.h"
+
+namespace chromeos {
+
+namespace {
+const int kDeviceModeFetchRetryDelayMs = 200;
+}
+
+static base::LazyInstance<LegacyRetailModeDetector> g_kiosk_mode_settings =
+ LAZY_INSTANCE_INITIALIZER;
+
+// static
+LegacyRetailModeDetector* LegacyRetailModeDetector::Get() {
+ return g_kiosk_mode_settings.Pointer();
+}
+
+bool LegacyRetailModeDetector::IsKioskModeEnabled() {
+ return is_kiosk_mode_;
+}
+
+LegacyRetailModeDetector::LegacyRetailModeDetector() {
+ // In case we've force-enabled kiosk mode.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableKioskMode)) {
+ is_kiosk_mode_ = true;
+ return;
+ }
+
+ // Precache the value as we know it at construction time to avoid serving
+ // different values to different users.
+ if (g_browser_process) {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ policy::DeviceMode device_mode = connector->GetDeviceMode();
+ if (device_mode == policy::DEVICE_MODE_LEGACY_RETAIL_MODE) {
+ is_kiosk_mode_ = true;
+ return;
+ } else if (device_mode == policy::DEVICE_MODE_PENDING) {
bartfab (slow) 2014/11/27 16:25:47 Handling policy::DEVICE_MODE_PENDING is unnecessar
rkc 2014/12/01 19:15:04 Acknowledged.
+ DeviceSettingsService::Get()->GetOwnershipStatusAsync(
+ base::Bind(&LegacyRetailModeDetector::VerifyModeIsKnown,
+ base::Unretained(this)));
+ }
+ }
+ is_kiosk_mode_ = false;
+}
+
+LegacyRetailModeDetector::~LegacyRetailModeDetector() {
+}
+
+void LegacyRetailModeDetector::VerifyModeIsKnown(
+ DeviceSettingsService::OwnershipStatus status) {
+ if (status != DeviceSettingsService::OWNERSHIP_TAKEN)
+ return;
+
+ if (g_browser_process) {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ policy::DeviceMode device_mode = connector->GetDeviceMode();
+ // We retry asking for the mode until it becomes known.
+ switch (device_mode) {
+ case policy::DEVICE_MODE_PENDING:
+ content::BrowserThread::PostDelayedTask(
+ content::BrowserThread::UI, FROM_HERE,
+ base::Bind(&LegacyRetailModeDetector::VerifyModeIsKnown,
+ base::Unretained(this), status),
+ base::TimeDelta::FromMilliseconds(kDeviceModeFetchRetryDelayMs));
+ break;
+ case policy::DEVICE_MODE_LEGACY_RETAIL_MODE:
+ chrome::AttemptRestart();
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698