| 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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 void ChromeToMobileService::Shutdown() { | 330 void ChromeToMobileService::Shutdown() { |
| 331 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183 | 331 // TODO(msw): Unit tests do not provide profiles; see http://crbug.com/122183 |
| 332 // Unregister for cloud print device list invalidation notifications. | 332 // Unregister for cloud print device list invalidation notifications. |
| 333 ProfileSyncService* profile_sync_service = | 333 ProfileSyncService* profile_sync_service = |
| 334 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL; | 334 profile_ ? ProfileSyncServiceFactory::GetForProfile(profile_) : NULL; |
| 335 if (profile_sync_service) | 335 if (profile_sync_service) |
| 336 profile_sync_service->UnregisterInvalidationHandler(this); | 336 profile_sync_service->UnregisterInvalidationHandler(this); |
| 337 } | 337 } |
| 338 | 338 |
| 339 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) { | 339 void ChromeToMobileService::OnURLFetchComplete(const net::URLFetcher* source) { |
| 340 if (source->GetURL() == GetSearchURL(cloud_print_url_)) | 340 if (source->GetOriginalURL() == GetSearchURL(cloud_print_url_)) |
| 341 HandleSearchResponse(source); | 341 HandleSearchResponse(source); |
| 342 else if (source->GetOriginalURL() == GetSubmitURL(cloud_print_url_)) |
| 343 HandleSubmitResponse(source); |
| 342 else | 344 else |
| 343 HandleSubmitResponse(source); | 345 NOTREACHED(); |
| 344 | 346 |
| 345 // Remove the URLFetcher from the ScopedVector; this deletes the URLFetcher. | 347 // Remove the URLFetcher from the ScopedVector; this deletes the URLFetcher. |
| 346 for (ScopedVector<net::URLFetcher>::iterator it = url_fetchers_.begin(); | 348 for (ScopedVector<net::URLFetcher>::iterator it = url_fetchers_.begin(); |
| 347 it != url_fetchers_.end(); ++it) { | 349 it != url_fetchers_.end(); ++it) { |
| 348 if (*it == source) { | 350 if (*it == source) { |
| 349 url_fetchers_.erase(it); | 351 url_fetchers_.erase(it); |
| 350 break; | 352 break; |
| 351 } | 353 } |
| 352 } | 354 } |
| 353 } | 355 } |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 net::URLFetcher* search_request = net::URLFetcher::Create( | 585 net::URLFetcher* search_request = net::URLFetcher::Create( |
| 584 GetSearchURL(cloud_print_url_), net::URLFetcher::GET, this); | 586 GetSearchURL(cloud_print_url_), net::URLFetcher::GET, this); |
| 585 url_fetchers_.push_back(search_request); | 587 url_fetchers_.push_back(search_request); |
| 586 InitRequest(search_request); | 588 InitRequest(search_request); |
| 587 search_request->Start(); | 589 search_request->Start(); |
| 588 } | 590 } |
| 589 | 591 |
| 590 void ChromeToMobileService::HandleSearchResponse( | 592 void ChromeToMobileService::HandleSearchResponse( |
| 591 const net::URLFetcher* source) { | 593 const net::URLFetcher* source) { |
| 592 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 594 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 593 DCHECK_EQ(source->GetURL(), GetSearchURL(cloud_print_url_)); | 595 DCHECK_EQ(source->GetOriginalURL(), GetSearchURL(cloud_print_url_)); |
| 594 | 596 |
| 595 ListValue mobiles; | 597 ListValue mobiles; |
| 596 std::string data; | 598 std::string data; |
| 597 ListValue* list = NULL; | 599 ListValue* list = NULL; |
| 598 DictionaryValue* dictionary = NULL; | 600 DictionaryValue* dictionary = NULL; |
| 599 source->GetResponseAsString(&data); | 601 source->GetResponseAsString(&data); |
| 600 scoped_ptr<Value> json(base::JSONReader::Read(data)); | 602 scoped_ptr<Value> json(base::JSONReader::Read(data)); |
| 601 if (json.get() && json->GetAsDictionary(&dictionary) && dictionary && | 603 if (json.get() && json->GetAsDictionary(&dictionary) && dictionary && |
| 602 dictionary->GetList(cloud_print::kPrinterListValue, &list)) { | 604 dictionary->GetList(cloud_print::kPrinterListValue, &list)) { |
| 603 std::string type, name, id; | 605 std::string type, name, id; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 // Update the cached mobile device list in profile prefs. | 638 // Update the cached mobile device list in profile prefs. |
| 637 profile_->GetPrefs()->Set(prefs::kChromeToMobileDeviceList, mobiles); | 639 profile_->GetPrefs()->Set(prefs::kChromeToMobileDeviceList, mobiles); |
| 638 if (HasMobiles()) | 640 if (HasMobiles()) |
| 639 LogMetric(DEVICES_AVAILABLE); | 641 LogMetric(DEVICES_AVAILABLE); |
| 640 UpdateCommandState(); | 642 UpdateCommandState(); |
| 641 } | 643 } |
| 642 | 644 |
| 643 void ChromeToMobileService::HandleSubmitResponse( | 645 void ChromeToMobileService::HandleSubmitResponse( |
| 644 const net::URLFetcher* source) { | 646 const net::URLFetcher* source) { |
| 645 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 647 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 648 DCHECK_EQ(source->GetOriginalURL(), GetSubmitURL(cloud_print_url_)); |
| 649 |
| 646 // Get the success value from the cloud print server response data. | 650 // Get the success value from the cloud print server response data. |
| 647 std::string data; | 651 std::string data; |
| 648 bool success = false; | 652 bool success = false; |
| 649 source->GetResponseAsString(&data); | 653 source->GetResponseAsString(&data); |
| 650 DictionaryValue* dictionary = NULL; | 654 DictionaryValue* dictionary = NULL; |
| 651 scoped_ptr<Value> json(base::JSONReader::Read(data)); | 655 scoped_ptr<Value> json(base::JSONReader::Read(data)); |
| 652 if (json.get() && json->GetAsDictionary(&dictionary) && dictionary) { | 656 if (json.get() && json->GetAsDictionary(&dictionary) && dictionary) { |
| 653 dictionary->GetBoolean("success", &success); | 657 dictionary->GetBoolean("success", &success); |
| 654 int error_code = -1; | 658 int error_code = -1; |
| 655 if (dictionary->GetInteger("errorCode", &error_code)) | 659 if (dictionary->GetInteger("errorCode", &error_code)) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 683 | 687 |
| 684 // Report failure below and ignore the second response. | 688 // Report failure below and ignore the second response. |
| 685 request_observer_map_.erase(other); | 689 request_observer_map_.erase(other); |
| 686 break; | 690 break; |
| 687 } | 691 } |
| 688 } | 692 } |
| 689 | 693 |
| 690 if (observer.get()) | 694 if (observer.get()) |
| 691 observer->OnSendComplete(success); | 695 observer->OnSendComplete(success); |
| 692 } | 696 } |
| OLD | NEW |