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
5import("//build/config/features.gni")
6
7declare_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
53if (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
62config("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
78source_set("google_apis") {
79  sources = [
80    "gaia/account_tracker.cc",
81    "gaia/account_tracker.h",
82    "gaia/gaia_auth_consumer.cc",
83    "gaia/gaia_auth_consumer.h",
84    "gaia/gaia_auth_fetcher.cc",
85    "gaia/gaia_auth_fetcher.h",
86    "gaia/gaia_auth_util.cc",
87    "gaia/gaia_auth_util.h",
88    "gaia/gaia_constants.cc",
89    "gaia/gaia_constants.h",
90    "gaia/gaia_oauth_client.cc",
91    "gaia/gaia_oauth_client.h",
92    "gaia/gaia_switches.cc",
93    "gaia/gaia_switches.h",
94    "gaia/gaia_urls.cc",
95    "gaia/gaia_urls.h",
96    "gaia/google_service_auth_error.cc",
97    "gaia/google_service_auth_error.h",
98    "gaia/identity_provider.cc",
99    "gaia/identity_provider.h",
100    "gaia/merge_session_helper.cc",
101    "gaia/merge_session_helper.h",
102    "gaia/oauth_request_signer.cc",
103    "gaia/oauth_request_signer.h",
104    "gaia/oauth2_access_token_consumer.h",
105    "gaia/oauth2_access_token_fetcher.cc",
106    "gaia/oauth2_access_token_fetcher.h",
107    "gaia/oauth2_access_token_fetcher_impl.cc",
108    "gaia/oauth2_access_token_fetcher_impl.h",
109    "gaia/oauth2_api_call_flow.cc",
110    "gaia/oauth2_api_call_flow.h",
111    "gaia/oauth2_mint_token_flow.cc",
112    "gaia/oauth2_mint_token_flow.h",
113    "gaia/oauth2_token_service.cc",
114    "gaia/oauth2_token_service.h",
115    "gaia/oauth2_token_service_request.cc",
116    "gaia/oauth2_token_service_request.h",
117    "gaia/ubertoken_fetcher.cc",
118    "gaia/ubertoken_fetcher.h",
119    "google_api_keys.cc",
120    "google_api_keys.h",
121  ]
122
123  if (is_win) {
124    cflags = [ "/wd4267" ]  # size_t -> int
125  }
126
127  configs += [ ":key_defines" ]
128
129  deps = [
130    "//base",
131    "//crypto",
132    "//net",
133    "//third_party/libxml",
134  ]
135
136  if (enable_extensions) {
137    sources += [
138      "drive/auth_service.cc",
139      "drive/auth_service.h",
140      "drive/auth_service_interface.h",
141      "drive/auth_service_observer.h",
142      "drive/base_requests.cc",
143      "drive/base_requests.h",
144      "drive/drive_api_parser.cc",
145      "drive/drive_api_parser.h",
146      "drive/drive_api_requests.cc",
147      "drive/drive_api_requests.h",
148      "drive/drive_api_url_generator.cc",
149      "drive/drive_api_url_generator.h",
150      "drive/drive_common_callbacks.h",
151      "drive/gdata_errorcode.cc",
152      "drive/gdata_errorcode.h",
153      "drive/gdata_wapi_requests.cc",
154      "drive/gdata_wapi_requests.h",
155      "drive/gdata_wapi_parser.cc",
156      "drive/gdata_wapi_parser.h",
157      "drive/gdata_wapi_url_generator.cc",
158      "drive/gdata_wapi_url_generator.h",
159      "drive/request_sender.cc",
160      "drive/request_sender.h",
161      "drive/request_util.cc",
162      "drive/request_util.h",
163      "drive/task_util.cc",
164      "drive/task_util.h",
165      "drive/time_util.cc",
166      "drive/time_util.h",
167    ]
168  }
169}
170
171source_set("test_support") {
172  testonly = true
173  sources = [
174    "gaia/fake_gaia.cc",
175    "gaia/fake_gaia.h",
176    "gaia/fake_identity_provider.cc",
177    "gaia/fake_identity_provider.h",
178    "gaia/fake_oauth2_token_service.cc",
179    "gaia/fake_oauth2_token_service.h",
180    "gaia/mock_url_fetcher_factory.h",
181    "gaia/oauth2_token_service_test_util.cc",
182    "gaia/oauth2_token_service_test_util.h",
183  ]
184
185  public_deps = [
186    "//base",
187    "//base/test:test_support",
188    "//net",
189    "//net:test_support",
190  ]
191
192  if (enable_extensions) {
193    sources += [
194      "drive/dummy_auth_service.cc",
195      "drive/dummy_auth_service.h",
196      "drive/test_util.cc",
197      "drive/test_util.h",
198    ]
199  }
200}
201
202test("google_apis_unittest") {
203  sources = [
204    "google_api_keys_unittest.cc",
205    "gaia/gaia_auth_fetcher_unittest.cc",
206    "gaia/gaia_auth_util_unittest.cc",
207    "gaia/gaia_oauth_client_unittest.cc",
208    "gaia/google_service_auth_error_unittest.cc",
209    "gaia/merge_session_helper_unittest.cc",
210    "gaia/oauth_request_signer_unittest.cc",
211    "gaia/oauth2_access_token_fetcher_impl_unittest.cc",
212    "gaia/oauth2_api_call_flow_unittest.cc",
213    "gaia/oauth2_mint_token_flow_unittest.cc",
214    "gaia/oauth2_token_service_unittest.cc",
215    "gaia/ubertoken_fetcher_unittest.cc",
216  ]
217
218  configs += [ ":key_defines" ]
219
220  deps = [
221    ":google_apis",
222    ":test_support",
223    "//base",
224    "//base/test:run_all_unittests",
225    "//testing/gmock",
226    "//testing/gtest",
227  ]
228
229  if (enable_extensions) {
230    sources += [
231      "drive/base_requests_server_unittest.cc",
232      "drive/base_requests_unittest.cc",
233      "drive/drive_api_parser_unittest.cc",
234      "drive/drive_api_requests_unittest.cc",
235      "drive/drive_api_url_generator_unittest.cc",
236      "drive/gdata_wapi_parser_unittest.cc",
237      "drive/gdata_wapi_requests_unittest.cc",
238      "drive/gdata_wapi_url_generator_unittest.cc",
239      "drive/request_sender_unittest.cc",
240      "drive/request_util_unittest.cc",
241      "drive/time_util_unittest.cc",
242    ]
243  }
244}
245