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

Side by Side Diff: chrome/browser/chromeos/login/screens/device_disabled_screen.cc

Issue 676773002: Add device disabling to OOBE flow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h" 5 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h"
10 #include "base/command_line.h"
9 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/prefs/pref_service.h"
10 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/browser_process_platform_part.h"
11 #include "chrome/browser/chromeos/login/screens/screen_observer.h" 16 #include "chrome/browser/chromeos/login/screens/screen_observer.h"
12 #include "chrome/browser/chromeos/login/wizard_controller.h" 17 #include "chrome/browser/chromeos/login/wizard_controller.h"
18 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
19 #include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
20 #include "chrome/browser/chromeos/policy/server_backed_device_state.h"
21 #include "chrome/common/pref_names.h"
22 #include "chromeos/chromeos_switches.h"
23 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
13 24
14 namespace chromeos { 25 namespace chromeos {
15 26
16 DeviceDisabledScreen::DeviceDisabledScreen(ScreenObserver* observer, 27 DeviceDisabledScreen::DeviceDisabledScreen(ScreenObserver* observer,
17 DeviceDisabledScreenActor* actor) 28 DeviceDisabledScreenActor* actor)
18 : BaseScreen(observer), 29 : BaseScreen(observer),
19 actor_(actor) { 30 showing_(false),
31 actor_(actor),
32 weak_factory_(this) {
20 DCHECK(actor_); 33 DCHECK(actor_);
21 if (actor_) 34 if (actor_)
22 actor_->SetDelegate(this); 35 actor_->SetDelegate(this);
23 } 36 }
24 37
25 DeviceDisabledScreen::~DeviceDisabledScreen() { 38 DeviceDisabledScreen::~DeviceDisabledScreen() {
26 if (actor_) 39 if (actor_)
27 actor_->SetDelegate(NULL); 40 actor_->SetDelegate(NULL);
Joao da Silva 2014/10/24 09:07:30 nullptr
bartfab (slow) 2014/10/24 11:13:51 Done.
28 } 41 }
29 42
30 void DeviceDisabledScreen::PrepareToShow() { 43 void DeviceDisabledScreen::PrepareToShow() {
31 } 44 }
32 45
33 void DeviceDisabledScreen::Show() { 46 void DeviceDisabledScreen::Show() {
34 if (actor_) 47 if (!actor_)
Joao da Silva 2014/10/24 09:07:30 || showing_?
bartfab (slow) 2014/10/24 11:13:52 Done.
35 actor_->Show(); 48 return;
49
50 bool is_device_disabled = false;
51 g_browser_process->local_state()->GetDictionary(
52 prefs::kServerBackedDeviceState)->GetBoolean(policy::kDeviceStateDisabled,
Nikita (slow) 2014/10/24 10:26:12 If device_mode is policy::DEVICE_MODE_PENDING then
bartfab (slow) 2014/10/24 11:13:52 The value of |is_device_disabled| is independent o
Nikita (slow) 2014/10/24 13:57:28 So if is_device_disabled is true and you proceed i
bartfab (slow) 2014/10/24 14:02:18 In theory, yes, it could happen. And we handled it
53 &is_device_disabled);
54 if (!is_device_disabled ||
55 CommandLine::ForCurrentProcess()->HasSwitch(
56 switches::kDisableDeviceDisabling)) {
57 // Skip the screen if the device is not marked as disabled or device
58 // disabling has been turned off by flag.
59 IndicateDeviceNotDisabled();
60 return;
61 }
62
63 policy::BrowserPolicyConnectorChromeOS* connector =
64 g_browser_process->platform_part()->browser_policy_connector_chromeos();
65 if (connector->GetDeviceMode() == policy::DEVICE_MODE_PENDING) {
66 // Ensure that the device mode is known before proceeding.
67 connector->GetInstallAttributes()->ReadImmutableAttributes(
68 base::Bind(&DeviceDisabledScreen::Show,
Nikita (slow) 2014/10/24 10:26:12 What would be the UI transition if this check resu
bartfab (slow) 2014/10/24 11:13:51 Yes, the previous screen will still be showing. On
69 weak_factory_.GetWeakPtr()));
70 return;
71 }
72
73 if (connector->GetDeviceMode() != policy::DEVICE_MODE_NOT_SET) {
74 // Skip the screen if the device is owned already. The device disabling
75 // screen should only be shown during OOBE.
Joao da Silva 2014/10/24 09:07:30 Just so I understand, how do we disable devices th
bartfab (slow) 2014/10/24 11:13:52 In this CL, we don't :). It will be done in a foll
76 IndicateDeviceNotDisabled();
77 return;
78 }
79
80 showing_ = true;
81
82 std::string message;
83 g_browser_process->local_state()->GetDictionary(
84 prefs::kServerBackedDeviceState)->GetString(
85 policy::kDeviceStateDisabledMessage,
86 &message);
87 actor_->Show(message);
36 } 88 }
37 89
38 void DeviceDisabledScreen::Hide() { 90 void DeviceDisabledScreen::Hide() {
91 if (!showing_)
92 return;
93 showing_ = false;
94
39 if (actor_) 95 if (actor_)
40 actor_->Hide(); 96 actor_->Hide();
41 } 97 }
42 98
43 std::string DeviceDisabledScreen::GetName() const { 99 std::string DeviceDisabledScreen::GetName() const {
44 return WizardController::kDeviceDisabledScreenName; 100 return WizardController::kDeviceDisabledScreenName;
45 } 101 }
46 102
47 void DeviceDisabledScreen::OnActorDestroyed(DeviceDisabledScreenActor* actor) { 103 void DeviceDisabledScreen::OnActorDestroyed(DeviceDisabledScreenActor* actor) {
48 if (actor_ == actor) 104 if (actor_ == actor)
49 actor_ = NULL; 105 actor_ = NULL;
Joao da Silva 2014/10/24 09:07:30 nullptr
bartfab (slow) 2014/10/24 11:13:51 Done.
50 } 106 }
51 107
108 void DeviceDisabledScreen::IndicateDeviceNotDisabled() {
109 get_screen_observer()->OnExit(ScreenObserver::DEVICE_NOT_DISABLED);
110 }
111
52 } // namespace chromeos 112 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698