| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/webui/policy_ui.h" | 5 #include "chrome/browser/ui/webui/policy_ui.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 // CloudPolicyCoreStatusProvider implementation. | 221 // CloudPolicyCoreStatusProvider implementation. |
| 222 virtual void GetStatus(base::DictionaryValue* dict) OVERRIDE; | 222 virtual void GetStatus(base::DictionaryValue* dict) OVERRIDE; |
| 223 | 223 |
| 224 private: | 224 private: |
| 225 std::string domain_; | 225 std::string domain_; |
| 226 | 226 |
| 227 DISALLOW_COPY_AND_ASSIGN(DevicePolicyStatusProvider); | 227 DISALLOW_COPY_AND_ASSIGN(DevicePolicyStatusProvider); |
| 228 }; | 228 }; |
| 229 | 229 |
| 230 // A cloud policy status provider that reads policy status from the policy core | 230 // A cloud policy status provider that reads policy status from the policy core |
| 231 // associated with the device-local account specified by |account_id| at | 231 // associated with the device-local account specified by |user_id| at |
| 232 // construction time. The indirection via account ID and | 232 // construction time. The indirection via user ID and |
| 233 // DeviceLocalAccountPolicyService is necessary because the device-local account | 233 // DeviceLocalAccountPolicyService is necessary because the device-local account |
| 234 // may go away any time behind the scenes, at which point the status message | 234 // may go away any time behind the scenes, at which point the status message |
| 235 // text will indicate CloudPolicyStore::STATUS_BAD_STATE. | 235 // text will indicate CloudPolicyStore::STATUS_BAD_STATE. |
| 236 class DeviceLocalAccountPolicyStatusProvider | 236 class DeviceLocalAccountPolicyStatusProvider |
| 237 : public CloudPolicyStatusProvider, | 237 : public CloudPolicyStatusProvider, |
| 238 public policy::DeviceLocalAccountPolicyService::Observer { | 238 public policy::DeviceLocalAccountPolicyService::Observer { |
| 239 public: | 239 public: |
| 240 DeviceLocalAccountPolicyStatusProvider( | 240 DeviceLocalAccountPolicyStatusProvider( |
| 241 const std::string& account_id, | 241 const std::string& user_id, |
| 242 policy::DeviceLocalAccountPolicyService* service); | 242 policy::DeviceLocalAccountPolicyService* service); |
| 243 virtual ~DeviceLocalAccountPolicyStatusProvider(); | 243 virtual ~DeviceLocalAccountPolicyStatusProvider(); |
| 244 | 244 |
| 245 // CloudPolicyStatusProvider implementation. | 245 // CloudPolicyStatusProvider implementation. |
| 246 virtual void GetStatus(base::DictionaryValue* dict) OVERRIDE; | 246 virtual void GetStatus(base::DictionaryValue* dict) OVERRIDE; |
| 247 | 247 |
| 248 // policy::DeviceLocalAccountPolicyService::Observer implementation. | 248 // policy::DeviceLocalAccountPolicyService::Observer implementation. |
| 249 virtual void OnPolicyUpdated(const std::string& account_id) OVERRIDE; | 249 virtual void OnPolicyUpdated(const std::string& user_id) OVERRIDE; |
| 250 virtual void OnDeviceLocalAccountsChanged() OVERRIDE; | 250 virtual void OnDeviceLocalAccountsChanged() OVERRIDE; |
| 251 | 251 |
| 252 private: | 252 private: |
| 253 const std::string account_id_; | 253 const std::string user_id_; |
| 254 policy::DeviceLocalAccountPolicyService* service_; | 254 policy::DeviceLocalAccountPolicyService* service_; |
| 255 | 255 |
| 256 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider); | 256 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider); |
| 257 }; | 257 }; |
| 258 #endif | 258 #endif |
| 259 | 259 |
| 260 // The JavaScript message handler for the chrome://policy page. | 260 // The JavaScript message handler for the chrome://policy page. |
| 261 class PolicyUIHandler : public content::WebUIMessageHandler, | 261 class PolicyUIHandler : public content::WebUIMessageHandler, |
| 262 public policy::PolicyService::Observer { | 262 public policy::PolicyService::Observer { |
| 263 public: | 263 public: |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 | 371 |
| 372 DevicePolicyStatusProvider::~DevicePolicyStatusProvider() { | 372 DevicePolicyStatusProvider::~DevicePolicyStatusProvider() { |
| 373 } | 373 } |
| 374 | 374 |
| 375 void DevicePolicyStatusProvider::GetStatus(base::DictionaryValue* dict) { | 375 void DevicePolicyStatusProvider::GetStatus(base::DictionaryValue* dict) { |
| 376 GetStatusFromCore(core_, dict); | 376 GetStatusFromCore(core_, dict); |
| 377 dict->SetString("domain", domain_); | 377 dict->SetString("domain", domain_); |
| 378 } | 378 } |
| 379 | 379 |
| 380 DeviceLocalAccountPolicyStatusProvider::DeviceLocalAccountPolicyStatusProvider( | 380 DeviceLocalAccountPolicyStatusProvider::DeviceLocalAccountPolicyStatusProvider( |
| 381 const std::string& account_id, | 381 const std::string& user_id, |
| 382 policy::DeviceLocalAccountPolicyService* service) | 382 policy::DeviceLocalAccountPolicyService* service) |
| 383 : account_id_(account_id), | 383 : user_id_(user_id), |
| 384 service_(service) { | 384 service_(service) { |
| 385 service_->AddObserver(this); | 385 service_->AddObserver(this); |
| 386 } | 386 } |
| 387 | 387 |
| 388 DeviceLocalAccountPolicyStatusProvider:: | 388 DeviceLocalAccountPolicyStatusProvider:: |
| 389 ~DeviceLocalAccountPolicyStatusProvider() { | 389 ~DeviceLocalAccountPolicyStatusProvider() { |
| 390 service_->RemoveObserver(this); | 390 service_->RemoveObserver(this); |
| 391 } | 391 } |
| 392 | 392 |
| 393 void DeviceLocalAccountPolicyStatusProvider::GetStatus( | 393 void DeviceLocalAccountPolicyStatusProvider::GetStatus( |
| 394 base::DictionaryValue* dict) { | 394 base::DictionaryValue* dict) { |
| 395 const policy::DeviceLocalAccountPolicyBroker* broker = | 395 const policy::DeviceLocalAccountPolicyBroker* broker = |
| 396 service_->GetBrokerForAccount(account_id_); | 396 service_->GetBrokerForUser(user_id_); |
| 397 if (broker) { | 397 if (broker) { |
| 398 GetStatusFromCore(broker->core(), dict); | 398 GetStatusFromCore(broker->core(), dict); |
| 399 } else { | 399 } else { |
| 400 dict->SetBoolean("error", true); | 400 dict->SetBoolean("error", true); |
| 401 dict->SetString("status", | 401 dict->SetString("status", |
| 402 policy::FormatStoreStatus( | 402 policy::FormatStoreStatus( |
| 403 policy::CloudPolicyStore::STATUS_BAD_STATE, | 403 policy::CloudPolicyStore::STATUS_BAD_STATE, |
| 404 policy::CloudPolicyValidatorBase::VALIDATION_OK)); | 404 policy::CloudPolicyValidatorBase::VALIDATION_OK)); |
| 405 dict->SetString("username", account_id_); | 405 dict->SetString("username", std::string()); |
| 406 } | 406 } |
| 407 ExtractDomainFromUsername(dict); | 407 ExtractDomainFromUsername(dict); |
| 408 dict->SetBoolean("publicAccount", true); | 408 dict->SetBoolean("publicAccount", true); |
| 409 } | 409 } |
| 410 | 410 |
| 411 void DeviceLocalAccountPolicyStatusProvider::OnPolicyUpdated( | 411 void DeviceLocalAccountPolicyStatusProvider::OnPolicyUpdated( |
| 412 const std::string& account_id) { | 412 const std::string& user_id) { |
| 413 if (account_id == account_id_) | 413 if (user_id == user_id_) |
| 414 NotifyStatusChange(); | 414 NotifyStatusChange(); |
| 415 } | 415 } |
| 416 | 416 |
| 417 void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() { | 417 void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() { |
| 418 NotifyStatusChange(); | 418 NotifyStatusChange(); |
| 419 } | 419 } |
| 420 #endif | 420 #endif |
| 421 | 421 |
| 422 PolicyUIHandler::PolicyUIHandler() | 422 PolicyUIHandler::PolicyUIHandler() |
| 423 : weak_factory_(this) { | 423 : weak_factory_(this) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 } | 582 } |
| 583 | 583 |
| 584 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 584 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) { |
| 585 web_ui->AddMessageHandler(new PolicyUIHandler); | 585 web_ui->AddMessageHandler(new PolicyUIHandler); |
| 586 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), | 586 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), |
| 587 CreatePolicyUIHTMLSource()); | 587 CreatePolicyUIHTMLSource()); |
| 588 } | 588 } |
| 589 | 589 |
| 590 PolicyUI::~PolicyUI() { | 590 PolicyUI::~PolicyUI() { |
| 591 } | 591 } |
| OLD | NEW |