Home | History | Annotate | Download | only in google_apis
      1 # Copyright 2014 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 import("//build/config/crypto.gni")
      6 
      7 declare_args() {
      8   # You can set the variable 'use_official_google_api_keys' to true
      9   # to use the Google-internal file containing official API keys
     10   # for Google Chrome even in a developer build.  Setting this
     11   # variable explicitly to true will cause your build to fail if the
     12   # internal file is missing.
     13   #
     14   # The variable is documented here, but not handled in this file;
     15   # see //google_apis/determine_use_official_keys.gypi for the
     16   # implementation.
     17   #
     18   # Set the variable to false to not use the internal file, even when
     19   # it exists in your checkout.
     20   #
     21   # Leave it unset or set to "" to have the variable
     22   # implicitly set to true if you have
     23   # src/google_apis/internal/google_chrome_api_keys.h in your
     24   # checkout, and implicitly set to false if not.
     25   #
     26   # Note that official builds always behave as if the variable
     27   # was explicitly set to true, i.e. they always use official keys,
     28   # and will fail to build if the internal file is missing.
     29   use_official_google_api_keys = ""
     30 
     31   # Set these to bake the specified API keys and OAuth client
     32   # IDs/secrets into your build.
     33   #
     34   # If you create a build without values baked in, you can instead
     35   # set environment variables to provide the keys at runtime (see
     36   # src/google_apis/google_api_keys.h for details).  Features that
     37   # require server-side APIs may fail to work if no keys are
     38   # provided.
     39   #
     40   # Note that if you are building an official build or if
     41   # use_official_google_api_keys has been set to trie (explicitly or
     42   # implicitly), these values will be ignored and the official
     43   # keys will be used instead.
     44   google_api_key = ""
     45 
     46   # See google_api_key.
     47   google_default_client_id = ""
     48 
     49   # See google_api_key.
     50   google_default_client_secret = ""
     51 }
     52 
     53 if (use_official_google_api_keys == "") {
     54   # Default behavior, check if the key file exists.
     55   check_internal_result = exec_script(
     56     "build/check_internal.py",
     57     [ rebase_path("internal/google_chrome_api_keys.h", root_build_dir) ],
     58     "value")
     59   use_official_google_api_keys = (check_internal_result == 1)
     60 }
     61 
     62 config("key_defines") {
     63   defines = []
     64   if (use_official_google_api_keys) {
     65     defines += [ "USE_OFFICIAL_GOOGLE_API_KEYS=1" ]
     66   }
     67   if (google_api_key != "") {
     68     defines += [ "GOOGLE_API_KEY=$google_api_key" ]
     69   }
     70   if (google_default_client_id != "") {
     71     defines += [ "GOOGLE_DEFAULT_CLIENT_ID=$google_default_client_id" ]
     72   }
     73   if (google_default_client_secret != "") {
     74     defines += [ "GOOGLE_DEFAULT_CLIENT_SECRET=$google_default_client_secret" ]
     75   }
     76 }
     77 
     78 source_set("google_apis") {
     79   sources = [
     80     "cup/client_update_protocol.cc",
     81     "cup/client_update_protocol.h",
     82     "drive/auth_service.cc",
     83     "drive/auth_service.h",
     84     "drive/auth_service_interface.h",
     85     "drive/auth_service_observer.h",
     86     "drive/base_requests.cc",
     87     "drive/base_requests.h",
     88     "drive/drive_api_parser.cc",
     89     "drive/drive_api_parser.h",
     90     "drive/drive_api_requests.cc",
     91     "drive/drive_api_requests.h",
     92     "drive/drive_api_url_generator.cc",
     93     "drive/drive_api_url_generator.h",
     94     "drive/drive_common_callbacks.h",
     95     "drive/drive_entry_kinds.h",
     96     "drive/gdata_errorcode.cc",
     97     "drive/gdata_errorcode.h",
     98     "drive/gdata_wapi_requests.cc",
     99     "drive/gdata_wapi_requests.h",
    100     "drive/gdata_wapi_parser.cc",
    101     "drive/gdata_wapi_parser.h",
    102     "drive/gdata_wapi_url_generator.cc",
    103     "drive/gdata_wapi_url_generator.h",
    104     "drive/request_sender.cc",
    105     "drive/request_sender.h",
    106     "drive/request_util.cc",
    107     "drive/request_util.h",
    108     "drive/task_util.cc",
    109     "drive/task_util.h",
    110     "drive/time_util.cc",
    111     "drive/time_util.h",
    112     "gaia/gaia_auth_consumer.cc",
    113     "gaia/gaia_auth_consumer.h",
    114     "gaia/gaia_auth_fetcher.cc",
    115     "gaia/gaia_auth_fetcher.h",
    116     "gaia/gaia_auth_util.cc",
    117     "gaia/gaia_auth_util.h",
    118     "gaia/gaia_constants.cc",
    119     "gaia/gaia_constants.h",
    120     "gaia/gaia_oauth_client.cc",
    121     "gaia/gaia_oauth_client.h",
    122     "gaia/gaia_switches.cc",
    123     "gaia/gaia_switches.h",
    124     "gaia/gaia_urls.cc",
    125     "gaia/gaia_urls.h",
    126     "gaia/google_service_auth_error.cc",
    127     "gaia/google_service_auth_error.h",
    128     "gaia/identity_provider.cc",
    129     "gaia/identity_provider.h",
    130     "gaia/merge_session_helper.cc",
    131     "gaia/merge_session_helper.h",
    132     "gaia/oauth_request_signer.cc",
    133     "gaia/oauth_request_signer.h",
    134     "gaia/oauth2_access_token_consumer.h",
    135     "gaia/oauth2_access_token_fetcher.h",
    136     "gaia/oauth2_access_token_fetcher.cc",
    137     "gaia/oauth2_access_token_fetcher_impl.cc",
    138     "gaia/oauth2_access_token_fetcher_impl.h",
    139     "gaia/oauth2_api_call_flow.cc",
    140     "gaia/oauth2_api_call_flow.h",
    141     "gaia/oauth2_mint_token_flow.cc",
    142     "gaia/oauth2_mint_token_flow.h",
    143     "gaia/oauth2_token_service.cc",
    144     "gaia/oauth2_token_service.h",
    145     "gaia/ubertoken_fetcher.cc",
    146     "gaia/ubertoken_fetcher.h",
    147     "google_api_keys.cc",
    148     "google_api_keys.h",
    149   ]
    150 
    151   if (is_win) {
    152     cflags = [ "/wd4267" ]  # size_t -> int
    153   }
    154 
    155   configs += [ ":key_defines" ]
    156 
    157   deps = [
    158     "//base",
    159     "//crypto",
    160     "//crypto:platform",
    161     "//net",
    162     "//third_party/libxml",
    163   ]
    164 
    165   if (use_openssl) {
    166     sources += [ "cup/client_update_protocol_openssl.cc" ]
    167   } else {
    168     sources += [ "cup/client_update_protocol_nss.cc" ]
    169   }
    170 }
    171 
    172 source_set("test_support") {
    173   sources = [
    174     "drive/dummy_auth_service.cc",
    175     "drive/dummy_auth_service.h",
    176     "drive/test_util.cc",
    177     "drive/test_util.h",
    178     "gaia/fake_gaia.cc",
    179     "gaia/fake_gaia.h",
    180     "gaia/fake_identity_provider.cc",
    181     "gaia/fake_identity_provider.h",
    182     "gaia/fake_oauth2_token_service.cc",
    183     "gaia/fake_oauth2_token_service.h",
    184     "gaia/mock_url_fetcher_factory.h",
    185     "gaia/oauth2_token_service_test_util.cc",
    186     "gaia/oauth2_token_service_test_util.h",
    187   ]
    188 
    189   deps = [
    190     "//base",
    191     "//base/test:test_support",
    192     "//net",
    193     "//net:test_support",
    194   ]
    195   forward_dependent_configs_from = deps
    196 }
    197 
    198 test("google_apis_unittest") {
    199   sources = [
    200     "google_api_keys_unittest.cc",
    201     "cup/client_update_protocol_unittest.cc",
    202     "drive/base_requests_unittest.cc",
    203     "drive/base_requests_server_unittest.cc",
    204     "drive/drive_api_requests_unittest.cc",
    205     "drive/drive_api_parser_unittest.cc",
    206     "drive/drive_api_url_generator_unittest.cc",
    207     "drive/gdata_wapi_parser_unittest.cc",
    208     "drive/gdata_wapi_requests_unittest.cc",
    209     "drive/gdata_wapi_url_generator_unittest.cc",
    210     "drive/request_sender_unittest.cc",
    211     "drive/request_util_unittest.cc",
    212     "drive/time_util_unittest.cc",
    213     "gaia/gaia_auth_fetcher_unittest.cc",
    214     "gaia/gaia_auth_util_unittest.cc",
    215     "gaia/gaia_oauth_client_unittest.cc",
    216     "gaia/google_service_auth_error_unittest.cc",
    217     "gaia/merge_session_helper_unittest.cc",
    218     "gaia/oauth_request_signer_unittest.cc",
    219     "gaia/oauth2_access_token_fetcher_impl_unittest.cc",
    220     "gaia/oauth2_api_call_flow_unittest.cc",
    221     "gaia/oauth2_mint_token_flow_unittest.cc",
    222     "gaia/oauth2_token_service_unittest.cc",
    223     "gaia/ubertoken_fetcher_unittest.cc",
    224   ]
    225 
    226   configs += [ ":key_defines" ]
    227 
    228   deps = [
    229     ":google_apis",
    230     ":test_support",
    231     "//base",
    232     "//base/test:run_all_unittests",
    233     "//testing/gmock",
    234     "//testing/gtest",
    235   ]
    236 
    237   if (is_android) {
    238     sources -= [
    239       "drive/base_requests_server_unittest.cc",
    240       "drive/drive_api_parser_unittest.cc",
    241       "drive/drive_api_requests_unittest.cc",
    242       "drive/gdata_wapi_parser_unittest.cc",
    243       "drive/gdata_wapi_requests_unittest.cc",
    244     ]
    245   }
    246 }
    247