| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/policy/cloud_external_data_manager_base.h" | 5 #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 scoped_refptr<base::SequencedTaskRunner> backend_task_runner, | 346 scoped_refptr<base::SequencedTaskRunner> backend_task_runner, |
| 347 scoped_refptr<base::SequencedTaskRunner> io_task_runner) | 347 scoped_refptr<base::SequencedTaskRunner> io_task_runner) |
| 348 : backend_task_runner_(backend_task_runner), | 348 : backend_task_runner_(backend_task_runner), |
| 349 io_task_runner_(io_task_runner), | 349 io_task_runner_(io_task_runner), |
| 350 backend_(new Backend(get_policy_details, | 350 backend_(new Backend(get_policy_details, |
| 351 backend_task_runner_, | 351 backend_task_runner_, |
| 352 base::ThreadTaskRunnerHandle::Get())) { | 352 base::ThreadTaskRunnerHandle::Get())) { |
| 353 } | 353 } |
| 354 | 354 |
| 355 CloudExternalDataManagerBase::~CloudExternalDataManagerBase() { | 355 CloudExternalDataManagerBase::~CloudExternalDataManagerBase() { |
| 356 DCHECK(CalledOnValidThread()); | 356 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 357 io_task_runner_->DeleteSoon(FROM_HERE, | 357 io_task_runner_->DeleteSoon(FROM_HERE, |
| 358 external_policy_data_fetcher_backend_.release()); | 358 external_policy_data_fetcher_backend_.release()); |
| 359 backend_task_runner_->DeleteSoon(FROM_HERE, backend_.release()); | 359 backend_task_runner_->DeleteSoon(FROM_HERE, backend_.release()); |
| 360 } | 360 } |
| 361 | 361 |
| 362 void CloudExternalDataManagerBase::SetExternalDataStore( | 362 void CloudExternalDataManagerBase::SetExternalDataStore( |
| 363 std::unique_ptr<CloudExternalDataStore> external_data_store) { | 363 std::unique_ptr<CloudExternalDataStore> external_data_store) { |
| 364 DCHECK(CalledOnValidThread()); | 364 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 365 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 365 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 366 &Backend::SetExternalDataStore, | 366 &Backend::SetExternalDataStore, |
| 367 base::Unretained(backend_.get()), | 367 base::Unretained(backend_.get()), |
| 368 base::Passed(&external_data_store))); | 368 base::Passed(&external_data_store))); |
| 369 } | 369 } |
| 370 | 370 |
| 371 void CloudExternalDataManagerBase::SetPolicyStore( | 371 void CloudExternalDataManagerBase::SetPolicyStore( |
| 372 CloudPolicyStore* policy_store) { | 372 CloudPolicyStore* policy_store) { |
| 373 DCHECK(CalledOnValidThread()); | 373 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 374 CloudExternalDataManager::SetPolicyStore(policy_store); | 374 CloudExternalDataManager::SetPolicyStore(policy_store); |
| 375 if (policy_store_ && policy_store_->is_initialized()) | 375 if (policy_store_ && policy_store_->is_initialized()) |
| 376 OnPolicyStoreLoaded(); | 376 OnPolicyStoreLoaded(); |
| 377 } | 377 } |
| 378 | 378 |
| 379 void CloudExternalDataManagerBase::OnPolicyStoreLoaded() { | 379 void CloudExternalDataManagerBase::OnPolicyStoreLoaded() { |
| 380 // Collect all external data references made by policies in |policy_store_| | 380 // Collect all external data references made by policies in |policy_store_| |
| 381 // and pass them to the |backend_|. | 381 // and pass them to the |backend_|. |
| 382 DCHECK(CalledOnValidThread()); | 382 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 383 std::unique_ptr<Metadata> metadata(new Metadata); | 383 std::unique_ptr<Metadata> metadata(new Metadata); |
| 384 const PolicyMap& policy_map = policy_store_->policy_map(); | 384 const PolicyMap& policy_map = policy_store_->policy_map(); |
| 385 for (PolicyMap::const_iterator it = policy_map.begin(); | 385 for (PolicyMap::const_iterator it = policy_map.begin(); |
| 386 it != policy_map.end(); ++it) { | 386 it != policy_map.end(); ++it) { |
| 387 if (!it->second.external_data_fetcher) { | 387 if (!it->second.external_data_fetcher) { |
| 388 // Skip policies that do not reference external data. | 388 // Skip policies that do not reference external data. |
| 389 continue; | 389 continue; |
| 390 } | 390 } |
| 391 const base::DictionaryValue* dict = NULL; | 391 const base::DictionaryValue* dict = NULL; |
| 392 std::string url; | 392 std::string url; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 405 } | 405 } |
| 406 | 406 |
| 407 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 407 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 408 &Backend::OnMetadataUpdated, | 408 &Backend::OnMetadataUpdated, |
| 409 base::Unretained(backend_.get()), | 409 base::Unretained(backend_.get()), |
| 410 base::Passed(&metadata))); | 410 base::Passed(&metadata))); |
| 411 } | 411 } |
| 412 | 412 |
| 413 void CloudExternalDataManagerBase::Connect( | 413 void CloudExternalDataManagerBase::Connect( |
| 414 scoped_refptr<net::URLRequestContextGetter> request_context) { | 414 scoped_refptr<net::URLRequestContextGetter> request_context) { |
| 415 DCHECK(CalledOnValidThread()); | 415 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 416 DCHECK(!external_policy_data_fetcher_backend_); | 416 DCHECK(!external_policy_data_fetcher_backend_); |
| 417 external_policy_data_fetcher_backend_.reset( | 417 external_policy_data_fetcher_backend_.reset( |
| 418 new ExternalPolicyDataFetcherBackend(io_task_runner_, | 418 new ExternalPolicyDataFetcherBackend(io_task_runner_, |
| 419 request_context)); | 419 request_context)); |
| 420 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 420 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 421 &Backend::Connect, | 421 &Backend::Connect, |
| 422 base::Unretained(backend_.get()), | 422 base::Unretained(backend_.get()), |
| 423 base::Passed(external_policy_data_fetcher_backend_->CreateFrontend( | 423 base::Passed(external_policy_data_fetcher_backend_->CreateFrontend( |
| 424 backend_task_runner_)))); | 424 backend_task_runner_)))); |
| 425 } | 425 } |
| 426 | 426 |
| 427 void CloudExternalDataManagerBase::Disconnect() { | 427 void CloudExternalDataManagerBase::Disconnect() { |
| 428 DCHECK(CalledOnValidThread()); | 428 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 429 io_task_runner_->DeleteSoon(FROM_HERE, | 429 io_task_runner_->DeleteSoon(FROM_HERE, |
| 430 external_policy_data_fetcher_backend_.release()); | 430 external_policy_data_fetcher_backend_.release()); |
| 431 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 431 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 432 &Backend::Disconnect, base::Unretained(backend_.get()))); | 432 &Backend::Disconnect, base::Unretained(backend_.get()))); |
| 433 } | 433 } |
| 434 | 434 |
| 435 void CloudExternalDataManagerBase::Fetch( | 435 void CloudExternalDataManagerBase::Fetch( |
| 436 const std::string& policy, | 436 const std::string& policy, |
| 437 const ExternalDataFetcher::FetchCallback& callback) { | 437 const ExternalDataFetcher::FetchCallback& callback) { |
| 438 DCHECK(CalledOnValidThread()); | 438 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 439 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 439 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 440 &Backend::Fetch, base::Unretained(backend_.get()), policy, callback)); | 440 &Backend::Fetch, base::Unretained(backend_.get()), policy, callback)); |
| 441 } | 441 } |
| 442 | 442 |
| 443 // static | 443 // static |
| 444 void CloudExternalDataManagerBase::SetMaxExternalDataSizeForTesting( | 444 void CloudExternalDataManagerBase::SetMaxExternalDataSizeForTesting( |
| 445 int max_size) { | 445 int max_size) { |
| 446 g_max_external_data_size_for_testing = max_size; | 446 g_max_external_data_size_for_testing = max_size; |
| 447 } | 447 } |
| 448 | 448 |
| 449 void CloudExternalDataManagerBase::FetchAll() { | 449 void CloudExternalDataManagerBase::FetchAll() { |
| 450 DCHECK(CalledOnValidThread()); | 450 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 451 backend_task_runner_->PostTask(FROM_HERE, base::Bind( | 451 backend_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 452 &Backend::FetchAll, base::Unretained(backend_.get()))); | 452 &Backend::FetchAll, base::Unretained(backend_.get()))); |
| 453 } | 453 } |
| 454 | 454 |
| 455 } // namespace policy | 455 } // namespace policy |
| OLD | NEW |