| 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 "device/geolocation/network_location_request.h" | 5 #include "device/geolocation/network_location_request.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 // Parse the response, ignoring comments. | 360 // Parse the response, ignoring comments. |
| 361 std::string error_msg; | 361 std::string error_msg; |
| 362 std::unique_ptr<base::Value> response_value = | 362 std::unique_ptr<base::Value> response_value = |
| 363 base::JSONReader::ReadAndReturnError(response_body, base::JSON_PARSE_RFC, | 363 base::JSONReader::ReadAndReturnError(response_body, base::JSON_PARSE_RFC, |
| 364 NULL, &error_msg); | 364 NULL, &error_msg); |
| 365 if (response_value == NULL) { | 365 if (response_value == NULL) { |
| 366 LOG(WARNING) << "ParseServerResponse() : JSONReader failed : " << error_msg; | 366 LOG(WARNING) << "ParseServerResponse() : JSONReader failed : " << error_msg; |
| 367 return false; | 367 return false; |
| 368 } | 368 } |
| 369 | 369 |
| 370 if (!response_value->IsType(base::Value::TYPE_DICTIONARY)) { | 370 if (!response_value->IsType(base::Value::Type::DICTIONARY)) { |
| 371 VLOG(1) << "ParseServerResponse() : Unexpected response type " | 371 VLOG(1) << "ParseServerResponse() : Unexpected response type " |
| 372 << response_value->GetType(); | 372 << response_value->GetType(); |
| 373 return false; | 373 return false; |
| 374 } | 374 } |
| 375 const base::DictionaryValue* response_object = | 375 const base::DictionaryValue* response_object = |
| 376 static_cast<base::DictionaryValue*>(response_value.get()); | 376 static_cast<base::DictionaryValue*>(response_value.get()); |
| 377 | 377 |
| 378 // Get the access token, if any. | 378 // Get the access token, if any. |
| 379 response_object->GetString(kAccessTokenString, access_token); | 379 response_object->GetString(kAccessTokenString, access_token); |
| 380 | 380 |
| 381 // Get the location | 381 // Get the location |
| 382 const base::Value* location_value = NULL; | 382 const base::Value* location_value = NULL; |
| 383 if (!response_object->Get(kLocationString, &location_value)) { | 383 if (!response_object->Get(kLocationString, &location_value)) { |
| 384 VLOG(1) << "ParseServerResponse() : Missing location attribute."; | 384 VLOG(1) << "ParseServerResponse() : Missing location attribute."; |
| 385 // GLS returns a response with no location property to represent | 385 // GLS returns a response with no location property to represent |
| 386 // no fix available; return true to indicate successful parse. | 386 // no fix available; return true to indicate successful parse. |
| 387 return true; | 387 return true; |
| 388 } | 388 } |
| 389 DCHECK(location_value); | 389 DCHECK(location_value); |
| 390 | 390 |
| 391 if (!location_value->IsType(base::Value::TYPE_DICTIONARY)) { | 391 if (!location_value->IsType(base::Value::Type::DICTIONARY)) { |
| 392 if (!location_value->IsType(base::Value::TYPE_NULL)) { | 392 if (!location_value->IsType(base::Value::Type::NONE)) { |
| 393 VLOG(1) << "ParseServerResponse() : Unexpected location type " | 393 VLOG(1) << "ParseServerResponse() : Unexpected location type " |
| 394 << location_value->GetType(); | 394 << location_value->GetType(); |
| 395 // If the network provider was unable to provide a position fix, it should | 395 // If the network provider was unable to provide a position fix, it should |
| 396 // return a HTTP 200, with "location" : null. Otherwise it's an error. | 396 // return a HTTP 200, with "location" : null. Otherwise it's an error. |
| 397 return false; | 397 return false; |
| 398 } | 398 } |
| 399 return true; // Successfully parsed response containing no fix. | 399 return true; // Successfully parsed response containing no fix. |
| 400 } | 400 } |
| 401 const base::DictionaryValue* location_object = | 401 const base::DictionaryValue* location_object = |
| 402 static_cast<const base::DictionaryValue*>(location_value); | 402 static_cast<const base::DictionaryValue*>(location_value); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 416 | 416 |
| 417 // Other fields are optional. | 417 // Other fields are optional. |
| 418 GetAsDouble(*response_object, kAccuracyString, &position->accuracy); | 418 GetAsDouble(*response_object, kAccuracyString, &position->accuracy); |
| 419 | 419 |
| 420 return true; | 420 return true; |
| 421 } | 421 } |
| 422 | 422 |
| 423 } // namespace | 423 } // namespace |
| 424 | 424 |
| 425 } // namespace device | 425 } // namespace device |
| OLD | NEW |