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

Unified Diff: chrome/browser/ui/webui/settings/chromeos/date_time_handler.cc

Issue 2393703005: MD Settings: Date and Time page, part 1/3 (Closed)
Patch Set: . Created 4 years, 2 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
Index: chrome/browser/ui/webui/settings/chromeos/date_time_handler.cc
diff --git a/chrome/browser/ui/webui/settings/chromeos/date_time_handler.cc b/chrome/browser/ui/webui/settings/chromeos/date_time_handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0e7257552101bb72e2ae55d83dbb9266b84256ef
--- /dev/null
+++ b/chrome/browser/ui/webui/settings/chromeos/date_time_handler.cc
@@ -0,0 +1,84 @@
+// Copyright 2016 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/ui/webui/settings/chromeos/date_time_handler.h"
+
+#include "base/command_line.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
+#include "chrome/browser/chromeos/system/timezone_util.h"
+#include "chrome/common/pref_names.h"
+#include "chromeos/chromeos_switches.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/web_ui.h"
+#include "content/public/browser/web_ui_data_source.h"
+
+namespace chromeos {
+namespace settings {
+
+namespace {
+
+// Returns whether the system's automatic time zone detection setting is
+// managed, which may override the user's setting.
+bool IsSystemTimezoneAutomaticDetectionManaged() {
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableSystemTimezoneAutomaticDetectionPolicy)) {
+ return false;
+ }
+ return g_browser_process->local_state()->IsManagedPreference(
+ prefs::kSystemTimezoneAutomaticDetectionPolicy);
+}
+
+// Returns the system's current automatic time zone detection policy value,
+// which corresponds to the SystemTimezoneProto's AutomaticTimezoneDetectionType
+// enum and determines whether the user's setting will be overridden.
+int GetSystemTimezoneAutomaticDetectionPolicyValue() {
+ DCHECK(IsSystemTimezoneAutomaticDetectionManaged());
+
+ return g_browser_process->local_state()->GetInteger(
+ prefs::kSystemTimezoneAutomaticDetectionPolicy);
+}
+
+} // namespace
+
+DateTimeHandler::DateTimeHandler() {}
+
+DateTimeHandler::~DateTimeHandler() {}
+
+DateTimeHandler* DateTimeHandler::Create(
+ content::WebUIDataSource* html_source) {
+ html_source->AddBoolean("systemTimeZoneManaged",
+ chromeos::system::HasSystemTimezonePolicy());
+
+ bool system_time_zone_automatic_detection_managed =
+ IsSystemTimezoneAutomaticDetectionManaged();
+ html_source->AddBoolean("systemTimeZoneDetectionManaged",
+ system_time_zone_automatic_detection_managed);
+ if (system_time_zone_automatic_detection_managed) {
+ html_source->AddInteger("systemTimeZoneDetectionPolicyValue",
+ GetSystemTimezoneAutomaticDetectionPolicyValue());
+ }
+
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ chromeos::switches::kDisableTimeZoneTrackingOption)) {
+ html_source->AddBoolean("hideTimeZoneDetection", true);
dpapad 2016/10/06 18:01:14 How about always setting this boolean, so that you
michaelpg 2016/10/06 18:22:50 There's enough precedence in the codebase for "opt
+ }
+
+ return new DateTimeHandler;
+}
+
+void DateTimeHandler::RegisterMessages() {
+ // TODO(michaelpg): Add time zone message handlers.
+}
+
+void DateTimeHandler::OnJavascriptAllowed() {
+ // TODO(michaelpg): Add policy observers.
+}
+
+void DateTimeHandler::OnJavascriptDisallowed() {
+ // TODO(michaelpg): Remove policy observers.
+}
+
+} // namespace settings
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698