 Chromium Code Reviews
 Chromium Code Reviews Issue 117253002:
  Add a new AssociationState DEPROVISIONED for cloud policy.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 117253002:
  Add a new AssociationState DEPROVISIONED for cloud policy.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| 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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 | 123 | 
| 124 // Add required resources. | 124 // Add required resources. | 
| 125 source->AddResourcePath("policy.css", IDR_POLICY_CSS); | 125 source->AddResourcePath("policy.css", IDR_POLICY_CSS); | 
| 126 source->AddResourcePath("policy.js", IDR_POLICY_JS); | 126 source->AddResourcePath("policy.js", IDR_POLICY_JS); | 
| 127 source->AddResourcePath("uber_utils.js", IDR_UBER_UTILS_JS); | 127 source->AddResourcePath("uber_utils.js", IDR_UBER_UTILS_JS); | 
| 128 source->SetDefaultResource(IDR_POLICY_HTML); | 128 source->SetDefaultResource(IDR_POLICY_HTML); | 
| 129 | 129 | 
| 130 return source; | 130 return source; | 
| 131 } | 131 } | 
| 132 | 132 | 
| 133 // Formats the association state indicated by |data|. If |data| is null, the | |
| 
bartfab (slow)
2013/12/19 11:00:22
Nit: s/null/NULL/.
 
Mattias Nissler (ping if slow)
2013/12/20 11:42:13
Done.
 | |
| 134 // state is considered to be UNMANAGED. | |
| 135 base::string16 FormatAssociationState(const em::PolicyData* data) { | |
| 136 if (data) { | |
| 137 switch (data->state()) { | |
| 138 case em::PolicyData::ACTIVE: | |
| 139 return l10n_util::GetStringUTF16(IDS_POLICY_ASSOCIATION_STATE_ACTIVE); | |
| 140 case em::PolicyData::UNMANAGED: | |
| 141 return l10n_util::GetStringUTF16( | |
| 142 IDS_POLICY_ASSOCIATION_STATE_UNMANAGED); | |
| 143 case em::PolicyData::DEPROVISIONED: | |
| 144 return l10n_util::GetStringUTF16( | |
| 145 IDS_POLICY_ASSOCIATION_STATE_DEPROVISIONED); | |
| 146 } | |
| 147 NOTREACHED() << "Unknown state " << data->state(); | |
| 148 } | |
| 149 | |
| 150 // Default to UNMANAGED for the case of missing policy or bad state enum. | |
| 151 return l10n_util::GetStringUTF16(IDS_POLICY_ASSOCIATION_STATE_UNMANAGED); | |
| 152 } | |
| 153 | |
| 133 void GetStatusFromCore(const policy::CloudPolicyCore* core, | 154 void GetStatusFromCore(const policy::CloudPolicyCore* core, | 
| 134 base::DictionaryValue* dict) { | 155 base::DictionaryValue* dict) { | 
| 135 const policy::CloudPolicyStore* store = core->store(); | 156 const policy::CloudPolicyStore* store = core->store(); | 
| 136 const policy::CloudPolicyClient* client = core->client(); | 157 const policy::CloudPolicyClient* client = core->client(); | 
| 137 const policy::CloudPolicyRefreshScheduler* refresh_scheduler = | 158 const policy::CloudPolicyRefreshScheduler* refresh_scheduler = | 
| 138 core->refresh_scheduler(); | 159 core->refresh_scheduler(); | 
| 139 | 160 | 
| 140 bool no_error = store->status() == policy::CloudPolicyStore::STATUS_OK && | 161 // CloudPolicyStore errors take precedence to show in the status message. | 
| 141 client && client->status() == policy::DM_STATUS_SUCCESS; | 162 // Other errors (such as transient policy fetching problems) get displayed | 
| 163 // only if CloudPolicyStore is in STATUS_OK. | |
| 142 base::string16 status = | 164 base::string16 status = | 
| 143 store->status() == policy::CloudPolicyStore::STATUS_OK && | 165 policy::FormatStoreStatus(store->status(), store->validation_status()); | 
| 144 client && client->status() != policy::DM_STATUS_SUCCESS ? | 166 if (store->status() == policy::CloudPolicyStore::STATUS_OK) { | 
| 145 policy::FormatDeviceManagementStatus(client->status()) : | 167 if (client && client->status() != policy::DM_STATUS_SUCCESS) | 
| 146 policy::FormatStoreStatus(store->status(), | 168 status = policy::FormatDeviceManagementStatus(client->status()); | 
| 147 store->validation_status()); | 169 else if (!store->is_managed()) | 
| 170 status = FormatAssociationState(store->policy()); | |
| 171 } | |
| 172 | |
| 148 const em::PolicyData* policy = store->policy(); | 173 const em::PolicyData* policy = store->policy(); | 
| 149 std::string client_id = policy ? policy->device_id() : std::string(); | 174 std::string client_id = policy ? policy->device_id() : std::string(); | 
| 150 std::string username = policy ? policy->username() : std::string(); | 175 std::string username = policy ? policy->username() : std::string(); | 
| 151 base::TimeDelta refresh_interval = | 176 base::TimeDelta refresh_interval = | 
| 152 base::TimeDelta::FromMilliseconds(refresh_scheduler ? | 177 base::TimeDelta::FromMilliseconds(refresh_scheduler ? | 
| 153 refresh_scheduler->refresh_delay() : | 178 refresh_scheduler->refresh_delay() : | 
| 154 policy::CloudPolicyRefreshScheduler::kDefaultRefreshDelayMs); | 179 policy::CloudPolicyRefreshScheduler::kDefaultRefreshDelayMs); | 
| 155 base::Time last_refresh_time = refresh_scheduler ? | 180 base::Time last_refresh_time = refresh_scheduler ? | 
| 156 refresh_scheduler->last_refresh() : base::Time(); | 181 refresh_scheduler->last_refresh() : base::Time(); | 
| 157 | 182 | 
| 183 bool no_error = store->status() == policy::CloudPolicyStore::STATUS_OK && | |
| 184 client && client->status() == policy::DM_STATUS_SUCCESS; | |
| 158 dict->SetBoolean("error", !no_error); | 185 dict->SetBoolean("error", !no_error); | 
| 159 dict->SetString("status", status); | 186 dict->SetString("status", status); | 
| 160 dict->SetString("clientId", client_id); | 187 dict->SetString("clientId", client_id); | 
| 161 dict->SetString("username", username); | 188 dict->SetString("username", username); | 
| 162 dict->SetString("refreshInterval", | 189 dict->SetString("refreshInterval", | 
| 163 ui::TimeFormat::TimeRemainingShort(refresh_interval)); | 190 ui::TimeFormat::TimeRemainingShort(refresh_interval)); | 
| 164 dict->SetString("timeSinceLastRefresh", last_refresh_time.is_null() ? | 191 dict->SetString("timeSinceLastRefresh", last_refresh_time.is_null() ? | 
| 165 l10n_util::GetStringUTF16(IDS_POLICY_NEVER_FETCHED) : | 192 l10n_util::GetStringUTF16(IDS_POLICY_NEVER_FETCHED) : | 
| 166 ui::TimeFormat::TimeElapsed(base::Time::NowFromSystemTime() - | 193 ui::TimeFormat::TimeElapsed(base::Time::NowFromSystemTime() - | 
| 167 last_refresh_time)); | 194 last_refresh_time)); | 
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 756 } | 783 } | 
| 757 | 784 | 
| 758 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 785 PolicyUI::PolicyUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 
| 759 web_ui->AddMessageHandler(new PolicyUIHandler); | 786 web_ui->AddMessageHandler(new PolicyUIHandler); | 
| 760 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), | 787 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), | 
| 761 CreatePolicyUIHTMLSource()); | 788 CreatePolicyUIHTMLSource()); | 
| 762 } | 789 } | 
| 763 | 790 | 
| 764 PolicyUI::~PolicyUI() { | 791 PolicyUI::~PolicyUI() { | 
| 765 } | 792 } | 
| OLD | NEW |