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

Side by Side Diff: chrome/browser/component_updater/supervised_user_whitelist_installer.cc

Issue 1408023003: Don't persist registrations for whitelists installed from the command line. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 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/component_updater/supervised_user_whitelist_installer.h " 5 #include "chrome/browser/component_updater/supervised_user_whitelist_installer.h "
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/files/file_enumerator.h" 9 #include "base/files/file_enumerator.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 } 379 }
380 380
381 void SupervisedUserWhitelistInstallerImpl::RegisterComponents() { 381 void SupervisedUserWhitelistInstallerImpl::RegisterComponents() {
382 std::set<std::string> registered_whitelists; 382 std::set<std::string> registered_whitelists;
383 const base::DictionaryValue* whitelists = 383 const base::DictionaryValue* whitelists =
384 local_state_->GetDictionary(prefs::kRegisteredSupervisedUserWhitelists); 384 local_state_->GetDictionary(prefs::kRegisteredSupervisedUserWhitelists);
385 for (base::DictionaryValue::Iterator it(*whitelists); !it.IsAtEnd(); 385 for (base::DictionaryValue::Iterator it(*whitelists); !it.IsAtEnd();
386 it.Advance()) { 386 it.Advance()) {
387 const base::DictionaryValue* dict = nullptr; 387 const base::DictionaryValue* dict = nullptr;
388 it.value().GetAsDictionary(&dict); 388 it.value().GetAsDictionary(&dict);
389
390 // Skip whitelists with no clients. This can happen when a whitelist was
391 // previously registered with an empty client ID.
392 const base::ListValue* clients = nullptr;
393 if (!dict->GetList(kClients, &clients) || clients->empty())
394 continue;
395
389 std::string name; 396 std::string name;
390 bool result = dict->GetString(kName, &name); 397 bool result = dict->GetString(kName, &name);
391 DCHECK(result); 398 DCHECK(result);
392 const std::string& id = it.key(); 399 const std::string& id = it.key();
393 RegisterComponent(id, name, base::Closure()); 400 RegisterComponent(id, name, base::Closure());
394 401
395 registered_whitelists.insert(id); 402 registered_whitelists.insert(id);
396 } 403 }
397 404
398 cus_->GetSequencedTaskRunner()->PostTask( 405 cus_->GetSequencedTaskRunner()->PostTask(
399 FROM_HERE, base::Bind(&RemoveUnregisteredWhitelistsOnTaskRunner, 406 FROM_HERE, base::Bind(&RemoveUnregisteredWhitelistsOnTaskRunner,
400 registered_whitelists)); 407 registered_whitelists));
401 } 408 }
402 409
403 void SupervisedUserWhitelistInstallerImpl::Subscribe( 410 void SupervisedUserWhitelistInstallerImpl::Subscribe(
404 const WhitelistReadyCallback& callback) { 411 const WhitelistReadyCallback& callback) {
405 return callbacks_.push_back(callback); 412 return callbacks_.push_back(callback);
406 } 413 }
407 414
408 void SupervisedUserWhitelistInstallerImpl::RegisterWhitelist( 415 void SupervisedUserWhitelistInstallerImpl::RegisterWhitelist(
409 const std::string& client_id, 416 const std::string& client_id,
410 const std::string& crx_id, 417 const std::string& crx_id,
411 const std::string& name) { 418 const std::string& name) {
412 DictionaryPrefUpdate update(local_state_, 419 DictionaryPrefUpdate update(local_state_,
413 prefs::kRegisteredSupervisedUserWhitelists); 420 prefs::kRegisteredSupervisedUserWhitelists);
414 base::DictionaryValue* pref_dict = update.Get(); 421 base::DictionaryValue* pref_dict = update.Get();
415 base::DictionaryValue* whitelist_dict = nullptr; 422 base::DictionaryValue* whitelist_dict = nullptr;
416 bool newly_added = false; 423 const bool newly_added =
417 if (!pref_dict->GetDictionaryWithoutPathExpansion(crx_id, &whitelist_dict)) { 424 !pref_dict->GetDictionaryWithoutPathExpansion(crx_id, &whitelist_dict);
425 if (newly_added) {
418 whitelist_dict = new base::DictionaryValue; 426 whitelist_dict = new base::DictionaryValue;
419 whitelist_dict->SetString(kName, name); 427 whitelist_dict->SetString(kName, name);
420 pref_dict->SetWithoutPathExpansion(crx_id, whitelist_dict); 428 pref_dict->SetWithoutPathExpansion(crx_id, whitelist_dict);
421 newly_added = true;
422 } 429 }
423 430
424 base::ListValue* clients = nullptr; 431 if (!client_id.empty()) {
425 if (!whitelist_dict->GetList(kClients, &clients)) { 432 base::ListValue* clients = nullptr;
426 DCHECK(newly_added); 433 if (!whitelist_dict->GetList(kClients, &clients)) {
427 clients = new base::ListValue; 434 DCHECK(newly_added);
428 whitelist_dict->Set(kClients, clients); 435 clients = new base::ListValue;
436 whitelist_dict->Set(kClients, clients);
437 }
438 bool success =
439 clients->AppendIfNotPresent(new base::StringValue(client_id));
440 DCHECK(success);
429 } 441 }
430 bool success = clients->AppendIfNotPresent(new base::StringValue(client_id));
431 DCHECK(success);
432 442
433 if (!newly_added) { 443 if (!newly_added) {
434 // Sanity-check that the stored name is equal to the name passed in. 444 // Sanity-check that the stored name is equal to the name passed in.
435 // In release builds this is a no-op. 445 // In release builds this is a no-op.
436 std::string stored_name; 446 std::string stored_name;
437 DCHECK(whitelist_dict->GetString(kName, &stored_name)); 447 DCHECK(whitelist_dict->GetString(kName, &stored_name));
438 DCHECK_EQ(stored_name, name); 448 DCHECK_EQ(stored_name, name);
439 return; 449 return;
440 } 450 }
441 451
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 524
515 // static 525 // static
516 void SupervisedUserWhitelistInstaller::TriggerComponentUpdate( 526 void SupervisedUserWhitelistInstaller::TriggerComponentUpdate(
517 OnDemandUpdater* updater, 527 OnDemandUpdater* updater,
518 const std::string& crx_id) { 528 const std::string& crx_id) {
519 const bool result = updater->OnDemandUpdate(crx_id); 529 const bool result = updater->OnDemandUpdate(crx_id);
520 DCHECK(result); 530 DCHECK(result);
521 } 531 }
522 532
523 } // namespace component_updater 533 } // namespace component_updater
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698