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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/safe_browsing/protocol_manager_helper.h" 6 7 #ifndef NDEBUG 8 #include "base/base64.h" 9 #endif 10 #include "base/environment.h" 11 #include "base/logging.h" 12 #include "base/stl_util.h" 13 #include "base/strings/string_util.h" 14 #include "base/strings/stringprintf.h" 15 #include "chrome/common/chrome_version_info.h" 16 #include "chrome/common/env_vars.h" 17 #include "google_apis/google_api_keys.h" 18 #include "net/base/escape.h" 19 20 SafeBrowsingProtocolConfig::SafeBrowsingProtocolConfig() 21 : disable_auto_update(false) 22 #if defined(OS_ANDROID) 23 , disable_connection_check(false) 24 #endif 25 { 26 } 27 28 SafeBrowsingProtocolConfig::~SafeBrowsingProtocolConfig() { 29 } 30 31 // static 32 std::string SafeBrowsingProtocolManagerHelper::Version() { 33 chrome::VersionInfo version_info; 34 if (!version_info.is_valid() || version_info.Version().empty()) 35 return "0.1"; 36 else 37 return version_info.Version(); 38 } 39 40 // static 41 std::string SafeBrowsingProtocolManagerHelper::ComposeUrl( 42 const std::string& prefix, const std::string& method, 43 const std::string& client_name, const std::string& version, 44 const std::string& additional_query) { 45 DCHECK(!prefix.empty() && !method.empty() && 46 !client_name.empty() && !version.empty()); 47 std::string url = base::StringPrintf("%s/%s?client=%s&appver=%s&pver=3.0", 48 prefix.c_str(), method.c_str(), 49 client_name.c_str(), version.c_str()); 50 std::string api_key = google_apis::GetAPIKey(); 51 if (!api_key.empty()) { 52 base::StringAppendF(&url, "&key=%s", 53 net::EscapeQueryParamValue(api_key, true).c_str()); 54 } 55 if (!additional_query.empty()) { 56 DCHECK(url.find("?") != std::string::npos); 57 url.append("&"); 58 url.append(additional_query); 59 } 60 return url; 61 } 62