Chromium Code Reviews| 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/policy/cloud/device_management_service.h" | 5 #include "chrome/browser/policy/cloud/device_management_service.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 478 | 478 |
| 479 DeviceManagementService::~DeviceManagementService() { | 479 DeviceManagementService::~DeviceManagementService() { |
| 480 // All running jobs should have been cancelled by now. | 480 // All running jobs should have been cancelled by now. |
| 481 DCHECK(pending_jobs_.empty()); | 481 DCHECK(pending_jobs_.empty()); |
| 482 DCHECK(queued_jobs_.empty()); | 482 DCHECK(queued_jobs_.empty()); |
| 483 } | 483 } |
| 484 | 484 |
| 485 DeviceManagementRequestJob* DeviceManagementService::CreateJob( | 485 DeviceManagementRequestJob* DeviceManagementService::CreateJob( |
| 486 DeviceManagementRequestJob::JobType type) { | 486 DeviceManagementRequestJob::JobType type) { |
| 487 return new DeviceManagementRequestJobImpl( | 487 return new DeviceManagementRequestJobImpl( |
| 488 type, agent_parameter_, platform_parameter_, this); | 488 type, |
| 489 configuration_->GetAgentParameter(), | |
| 490 configuration_->GetPlatformParameter(), | |
| 491 this); | |
| 489 } | 492 } |
| 490 | 493 |
| 491 void DeviceManagementService::ScheduleInitialization(int64 delay_milliseconds) { | 494 void DeviceManagementService::ScheduleInitialization(int64 delay_milliseconds) { |
| 492 if (initialized_) | 495 if (initialized_) |
| 493 return; | 496 return; |
| 494 base::MessageLoop::current()->PostDelayedTask( | 497 base::MessageLoop::current()->PostDelayedTask( |
| 495 FROM_HERE, | 498 FROM_HERE, |
| 496 base::Bind(&DeviceManagementService::Initialize, | 499 base::Bind(&DeviceManagementService::Initialize, |
| 497 weak_ptr_factory_.GetWeakPtr()), | 500 weak_ptr_factory_.GetWeakPtr()), |
| 498 base::TimeDelta::FromMilliseconds(delay_milliseconds)); | 501 base::TimeDelta::FromMilliseconds(delay_milliseconds)); |
| 499 } | 502 } |
| 500 | 503 |
| 501 void DeviceManagementService::Initialize() { | 504 void DeviceManagementService::Initialize() { |
| 502 if (initialized_) | 505 if (initialized_) |
| 503 return; | 506 return; |
| 504 DCHECK(!request_context_getter_.get()); | 507 DCHECK(!request_context_getter_.get()); |
| 505 request_context_getter_ = | 508 request_context_getter_ = new DeviceManagementRequestContextGetter( |
| 506 new DeviceManagementRequestContextGetter(request_context_, user_agent_); | 509 request_context_, configuration_->GetUserAgent()); |
| 507 initialized_ = true; | 510 initialized_ = true; |
| 508 | 511 |
| 509 while (!queued_jobs_.empty()) { | 512 while (!queued_jobs_.empty()) { |
| 510 StartJob(queued_jobs_.front()); | 513 StartJob(queued_jobs_.front()); |
| 511 queued_jobs_.pop_front(); | 514 queued_jobs_.pop_front(); |
| 512 } | 515 } |
| 513 } | 516 } |
| 514 | 517 |
| 515 void DeviceManagementService::Shutdown() { | 518 void DeviceManagementService::Shutdown() { |
| 516 for (JobFetcherMap::iterator job(pending_jobs_.begin()); | 519 for (JobFetcherMap::iterator job(pending_jobs_.begin()); |
| 517 job != pending_jobs_.end(); | 520 job != pending_jobs_.end(); |
| 518 ++job) { | 521 ++job) { |
| 519 delete job->first; | 522 delete job->first; |
| 520 queued_jobs_.push_back(job->second); | 523 queued_jobs_.push_back(job->second); |
| 521 } | 524 } |
| 522 pending_jobs_.clear(); | 525 pending_jobs_.clear(); |
| 523 } | 526 } |
| 524 | 527 |
| 525 DeviceManagementService::DeviceManagementService( | 528 DeviceManagementService::DeviceManagementService( |
| 526 scoped_refptr<net::URLRequestContextGetter> request_context, | 529 scoped_ptr<Configuration> configuration, |
| 527 const std::string& server_url, | 530 scoped_refptr<net::URLRequestContextGetter> request_context) |
| 528 const std::string& user_agent, | 531 : configuration_(configuration.Pass()), |
| 529 const std::string& agent_parameter, | 532 request_context_(request_context), |
| 530 const std::string& platform_parameter) | |
| 531 : request_context_(request_context), | |
| 532 server_url_(server_url), | |
| 533 user_agent_(user_agent), | |
| 534 agent_parameter_(agent_parameter), | |
| 535 platform_parameter_(platform_parameter), | |
| 536 initialized_(false), | 533 initialized_(false), |
| 537 weak_ptr_factory_(this) { | 534 weak_ptr_factory_(this) {} |
|
pastarmovj
2013/10/02 11:14:10
I think it makes sense to have a DCHECK(configurat
Joao da Silva
2013/10/02 11:37:40
Done.
| |
| 538 } | |
| 539 | 535 |
| 540 void DeviceManagementService::StartJob(DeviceManagementRequestJobImpl* job) { | 536 void DeviceManagementService::StartJob(DeviceManagementRequestJobImpl* job) { |
| 537 std::string server_url = configuration_->GetServerUrl(); | |
| 541 net::URLFetcher* fetcher = net::URLFetcher::Create( | 538 net::URLFetcher* fetcher = net::URLFetcher::Create( |
| 542 kURLFetcherID, job->GetURL(server_url_), net::URLFetcher::POST, this); | 539 kURLFetcherID, job->GetURL(server_url), net::URLFetcher::POST, this); |
| 543 fetcher->SetRequestContext(request_context_getter_.get()); | 540 fetcher->SetRequestContext(request_context_getter_.get()); |
| 544 job->ConfigureRequest(fetcher); | 541 job->ConfigureRequest(fetcher); |
| 545 pending_jobs_[fetcher] = job; | 542 pending_jobs_[fetcher] = job; |
| 546 fetcher->Start(); | 543 fetcher->Start(); |
| 547 } | 544 } |
| 548 | 545 |
| 549 void DeviceManagementService::OnURLFetchComplete( | 546 void DeviceManagementService::OnURLFetchComplete( |
| 550 const net::URLFetcher* source) { | 547 const net::URLFetcher* source) { |
| 551 JobFetcherMap::iterator entry(pending_jobs_.find(source)); | 548 JobFetcherMap::iterator entry(pending_jobs_.find(source)); |
| 552 if (entry == pending_jobs_.end()) { | 549 if (entry == pending_jobs_.end()) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 588 } | 585 } |
| 589 } | 586 } |
| 590 | 587 |
| 591 const JobQueue::iterator elem = | 588 const JobQueue::iterator elem = |
| 592 std::find(queued_jobs_.begin(), queued_jobs_.end(), job); | 589 std::find(queued_jobs_.begin(), queued_jobs_.end(), job); |
| 593 if (elem != queued_jobs_.end()) | 590 if (elem != queued_jobs_.end()) |
| 594 queued_jobs_.erase(elem); | 591 queued_jobs_.erase(elem); |
| 595 } | 592 } |
| 596 | 593 |
| 597 } // namespace policy | 594 } // namespace policy |
| OLD | NEW |