Home | History | Annotate | Download | only in safe_browsing
      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