| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/extensions/extension_updater.h" | 5 #include "chrome/browser/extensions/extension_updater.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/file_version_info.h" | 12 #include "base/file_version_info.h" |
| 13 #include "base/histogram.h" | 13 #include "base/histogram.h" |
| 14 #include "base/rand_util.h" | 14 #include "base/rand_util.h" |
| 15 #include "base/sha2.h" | 15 #include "base/sha2.h" |
| 16 #include "base/stl_util-inl.h" | 16 #include "base/stl_util-inl.h" |
| 17 #include "base/string_number_conversions.h" |
| 17 #include "base/string_util.h" | 18 #include "base/string_util.h" |
| 18 #include "base/time.h" | 19 #include "base/time.h" |
| 19 #include "base/thread.h" | 20 #include "base/thread.h" |
| 20 #include "base/version.h" | 21 #include "base/version.h" |
| 21 #include "chrome/browser/browser_process.h" | 22 #include "chrome/browser/browser_process.h" |
| 22 #include "chrome/browser/extensions/extension_error_reporter.h" | 23 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 23 #include "chrome/browser/extensions/extensions_service.h" | 24 #include "chrome/browser/extensions/extensions_service.h" |
| 24 #include "chrome/browser/pref_service.h" | 25 #include "chrome/browser/pref_service.h" |
| 25 #include "chrome/browser/profile.h" | 26 #include "chrome/browser/profile.h" |
| 26 #include "chrome/browser/utility_process_host.h" | 27 #include "chrome/browser/utility_process_host.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 return false; | 99 return false; |
| 99 } | 100 } |
| 100 | 101 |
| 101 // Compute the string we'd append onto the full_url_, and see if it fits. | 102 // Compute the string we'd append onto the full_url_, and see if it fits. |
| 102 std::vector<std::string> parts; | 103 std::vector<std::string> parts; |
| 103 parts.push_back("id=" + id); | 104 parts.push_back("id=" + id); |
| 104 parts.push_back("v=" + version); | 105 parts.push_back("v=" + version); |
| 105 parts.push_back("uc"); | 106 parts.push_back("uc"); |
| 106 | 107 |
| 107 if (ShouldPing(days)) { | 108 if (ShouldPing(days)) { |
| 108 parts.push_back("ping=" + EscapeQueryParamValue("r=" + IntToString(days), | 109 parts.push_back("ping=" + |
| 109 true)); | 110 EscapeQueryParamValue("r=" + base::IntToString(days), true)); |
| 110 } | 111 } |
| 111 | 112 |
| 112 std::string extra = full_url_.has_query() ? "&" : "?"; | 113 std::string extra = full_url_.has_query() ? "&" : "?"; |
| 113 extra += "x=" + EscapeQueryParamValue(JoinString(parts, '&'), true); | 114 extra += "x=" + EscapeQueryParamValue(JoinString(parts, '&'), true); |
| 114 | 115 |
| 115 // Check against our max url size, exempting the first extension added. | 116 // Check against our max url size, exempting the first extension added. |
| 116 int new_size = full_url_.possibly_invalid_spec().size() + extra.size(); | 117 int new_size = full_url_.possibly_invalid_spec().size() + extra.size(); |
| 117 if (extension_ids_.size() > 0 && new_size > kExtensionsManifestMaxURLSize) { | 118 if (extension_ids_.size() > 0 && new_size > kExtensionsManifestMaxURLSize) { |
| 118 UMA_HISTOGRAM_PERCENTAGE("Extensions.UpdateCheckHitUrlSizeLimit", 1); | 119 UMA_HISTOGRAM_PERCENTAGE("Extensions.UpdateCheckHitUrlSizeLimit", 1); |
| 119 return false; | 120 return false; |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 } | 550 } |
| 550 } | 551 } |
| 551 } | 552 } |
| 552 } | 553 } |
| 553 } | 554 } |
| 554 | 555 |
| 555 void ExtensionUpdater::ProcessBlacklist(const std::string& data) { | 556 void ExtensionUpdater::ProcessBlacklist(const std::string& data) { |
| 556 // Verify sha256 hash value. | 557 // Verify sha256 hash value. |
| 557 char sha256_hash_value[base::SHA256_LENGTH]; | 558 char sha256_hash_value[base::SHA256_LENGTH]; |
| 558 base::SHA256HashString(data, sha256_hash_value, base::SHA256_LENGTH); | 559 base::SHA256HashString(data, sha256_hash_value, base::SHA256_LENGTH); |
| 559 std::string hash_in_hex = HexEncode(sha256_hash_value, base::SHA256_LENGTH); | 560 std::string hash_in_hex = base::HexEncode(sha256_hash_value, |
| 561 base::SHA256_LENGTH); |
| 560 | 562 |
| 561 if (current_extension_fetch_.package_hash != hash_in_hex) { | 563 if (current_extension_fetch_.package_hash != hash_in_hex) { |
| 562 NOTREACHED() << "Fetched blacklist checksum is not as expected. " | 564 NOTREACHED() << "Fetched blacklist checksum is not as expected. " |
| 563 << "Expected: " << current_extension_fetch_.package_hash | 565 << "Expected: " << current_extension_fetch_.package_hash |
| 564 << " Actual: " << hash_in_hex; | 566 << " Actual: " << hash_in_hex; |
| 565 return; | 567 return; |
| 566 } | 568 } |
| 567 std::vector<std::string> blacklist; | 569 std::vector<std::string> blacklist; |
| 568 SplitString(data, '\n', &blacklist); | 570 SplitString(data, '\n', &blacklist); |
| 569 | 571 |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 835 extension_fetcher_.reset( | 837 extension_fetcher_.reset( |
| 836 URLFetcher::Create(kExtensionFetcherId, url, URLFetcher::GET, this)); | 838 URLFetcher::Create(kExtensionFetcherId, url, URLFetcher::GET, this)); |
| 837 extension_fetcher_->set_request_context( | 839 extension_fetcher_->set_request_context( |
| 838 Profile::GetDefaultRequestContext()); | 840 Profile::GetDefaultRequestContext()); |
| 839 extension_fetcher_->set_load_flags(net::LOAD_DO_NOT_SEND_COOKIES | | 841 extension_fetcher_->set_load_flags(net::LOAD_DO_NOT_SEND_COOKIES | |
| 840 net::LOAD_DO_NOT_SAVE_COOKIES); | 842 net::LOAD_DO_NOT_SAVE_COOKIES); |
| 841 extension_fetcher_->Start(); | 843 extension_fetcher_->Start(); |
| 842 current_extension_fetch_ = ExtensionFetch(id, url, hash, version); | 844 current_extension_fetch_ = ExtensionFetch(id, url, hash, version); |
| 843 } | 845 } |
| 844 } | 846 } |
| OLD | NEW |