| 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/chrome_to_mobile_service.h" | 5 #include "chrome/browser/chrome_to_mobile_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/guid.h" | 10 #include "base/guid.h" |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL; | 305 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL; |
| 306 if (profile_sync_service) | 306 if (profile_sync_service) |
| 307 profile_sync_service->UnregisterInvalidationHandler(this); | 307 profile_sync_service->UnregisterInvalidationHandler(this); |
| 308 } | 308 } |
| 309 | 309 |
| 310 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) { | 310 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) { |
| 311 if (source->GetURL() == GetSearchURL(cloud_print_url_)) | 311 if (source->GetURL() == GetSearchURL(cloud_print_url_)) |
| 312 HandleSearchResponse(source); | 312 HandleSearchResponse(source); |
| 313 else | 313 else |
| 314 HandleSubmitResponse(source); | 314 HandleSubmitResponse(source); |
| 315 |
| 316 // Remove the URLFetcher from the ScopedVector; this deletes the URLFetcher. |
| 317 for (ScopedVector<net::URLFetcher>::iterator it = url_fetchers_.begin(); |
| 318 it != url_fetchers_.end(); ++it) { |
| 319 if (*it == source) { |
| 320 url_fetchers_.erase(it); |
| 321 break; |
| 322 } |
| 323 } |
| 315 } | 324 } |
| 316 | 325 |
| 317 void ChromeToMobileService::Observe( | 326 void ChromeToMobileService::Observe( |
| 318 int type, | 327 int type, |
| 319 const content::NotificationSource& source, | 328 const content::NotificationSource& source, |
| 320 const content::NotificationDetails& details) { | 329 const content::NotificationDetails& details) { |
| 321 DCHECK_EQ(type, chrome::NOTIFICATION_TOKEN_AVAILABLE); | 330 DCHECK_EQ(type, chrome::NOTIFICATION_TOKEN_AVAILABLE); |
| 322 TokenService::TokenAvailableDetails* token_details = | 331 TokenService::TokenAvailableDetails* token_details = |
| 323 content::Details<TokenService::TokenAvailableDetails>(details).ptr(); | 332 content::Details<TokenService::TokenAvailableDetails>(details).ptr(); |
| 324 // Invalidate the cloud print access token on Gaia login token updates. | 333 // Invalidate the cloud print access token on Gaia login token updates. |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 } else if (observer.get()) { | 424 } else if (observer.get()) { |
| 416 // Signal snapshot generation failure. | 425 // Signal snapshot generation failure. |
| 417 observer->SnapshotGenerated(FilePath(), 0); | 426 observer->SnapshotGenerated(FilePath(), 0); |
| 418 } | 427 } |
| 419 } | 428 } |
| 420 | 429 |
| 421 net::URLFetcher* ChromeToMobileService::CreateRequest() { | 430 net::URLFetcher* ChromeToMobileService::CreateRequest() { |
| 422 net::URLFetcher* request = net::URLFetcher::Create( | 431 net::URLFetcher* request = net::URLFetcher::Create( |
| 423 cloud_print::GetUrlForSubmit(cloud_print_url_), | 432 cloud_print::GetUrlForSubmit(cloud_print_url_), |
| 424 net::URLFetcher::POST, this); | 433 net::URLFetcher::POST, this); |
| 434 url_fetchers_.push_back(request); |
| 425 InitRequest(request); | 435 InitRequest(request); |
| 426 return request; | 436 return request; |
| 427 } | 437 } |
| 428 | 438 |
| 429 void ChromeToMobileService::InitRequest(net::URLFetcher* request) { | 439 void ChromeToMobileService::InitRequest(net::URLFetcher* request) { |
| 430 request->SetRequestContext(profile_->GetRequestContext()); | 440 request->SetRequestContext(profile_->GetRequestContext()); |
| 431 request->SetMaxRetries(kMaxRetries); | 441 request->SetMaxRetries(kMaxRetries); |
| 432 DCHECK(!access_token_.empty()); | 442 DCHECK(!access_token_.empty()); |
| 433 request->SetExtraRequestHeaders("Authorization: OAuth " + | 443 request->SetExtraRequestHeaders("Authorization: OAuth " + |
| 434 access_token_ + "\r\n" + cloud_print::kChromeCloudPrintProxyHeader); | 444 access_token_ + "\r\n" + cloud_print::kChromeCloudPrintProxyHeader); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 task_queue_.push(base::Bind(&ChromeToMobileService::RequestDeviceSearch, | 516 task_queue_.push(base::Bind(&ChromeToMobileService::RequestDeviceSearch, |
| 507 weak_ptr_factory_.GetWeakPtr())); | 517 weak_ptr_factory_.GetWeakPtr())); |
| 508 RequestAccessToken(); | 518 RequestAccessToken(); |
| 509 return; | 519 return; |
| 510 } | 520 } |
| 511 | 521 |
| 512 LogMetric(DEVICES_REQUESTED); | 522 LogMetric(DEVICES_REQUESTED); |
| 513 | 523 |
| 514 net::URLFetcher* search_request = net::URLFetcher::Create( | 524 net::URLFetcher* search_request = net::URLFetcher::Create( |
| 515 GetSearchURL(cloud_print_url_), net::URLFetcher::GET, this); | 525 GetSearchURL(cloud_print_url_), net::URLFetcher::GET, this); |
| 526 url_fetchers_.push_back(search_request); |
| 516 InitRequest(search_request); | 527 InitRequest(search_request); |
| 517 search_request->Start(); | 528 search_request->Start(); |
| 518 } | 529 } |
| 519 | 530 |
| 520 void ChromeToMobileService::HandleSearchResponse( | 531 void ChromeToMobileService::HandleSearchResponse( |
| 521 const net::URLFetcher* source) { | 532 const net::URLFetcher* source) { |
| 522 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 533 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 523 DCHECK_EQ(source->GetURL(), GetSearchURL(cloud_print_url_)); | 534 DCHECK_EQ(source->GetURL(), GetSearchURL(cloud_print_url_)); |
| 524 | 535 |
| 525 std::string data; | 536 std::string data; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 | 603 |
| 593 // Report failure below and ignore the second response. | 604 // Report failure below and ignore the second response. |
| 594 request_observer_map_.erase(other); | 605 request_observer_map_.erase(other); |
| 595 break; | 606 break; |
| 596 } | 607 } |
| 597 } | 608 } |
| 598 | 609 |
| 599 if (observer.get()) | 610 if (observer.get()) |
| 600 observer->OnSendComplete(success); | 611 observer->OnSendComplete(success); |
| 601 } | 612 } |
| OLD | NEW |