| 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 |