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 |