Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: components/autofill/content/browser/wallet/wallet_service_url.cc

Issue 1288093004: rAc Wallet extirpation round 4: clean out RPC code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gn Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/content/browser/wallet/wallet_service_url.h" 5 #include "components/autofill/content/browser/wallet/wallet_service_url.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
11 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "components/autofill/core/common/autofill_switches.h" 16 #include "components/autofill/core/common/autofill_switches.h"
17 #include "content/public/common/content_switches.h" 17 #include "content/public/common/content_switches.h"
18 #include "content/public/common/url_constants.h" 18 #include "content/public/common/url_constants.h"
19 #include "google_apis/gaia/gaia_urls.h" 19 #include "google_apis/gaia/gaia_urls.h"
20 #include "net/base/url_util.h" 20 #include "net/base/url_util.h"
21 #include "url/gurl.h" 21 #include "url/gurl.h"
22 22
23 namespace autofill { 23 namespace autofill {
24 namespace { 24 namespace {
25 25
26 const char kProdWalletServiceUrl[] = "https://wallet.google.com/"; 26 const char kProdWalletServiceUrl[] = "https://wallet.google.com/";
27 27
28 const char kSandboxWalletServiceUrl[] =
29 "https://wallet-web.sandbox.google.com/";
30
31 const char kSandboxWalletSecureServiceUrl[] = 28 const char kSandboxWalletSecureServiceUrl[] =
32 "https://wallet-web.sandbox.google.com/"; 29 "https://wallet-web.sandbox.google.com/";
33 30
34 bool IsWalletProductionEnabled() { 31 bool IsWalletProductionEnabled() {
35 // If the command line flag exists, it takes precedence. 32 // If the command line flag exists, it takes precedence.
36 const base::CommandLine* command_line = 33 const base::CommandLine* command_line =
37 base::CommandLine::ForCurrentProcess(); 34 base::CommandLine::ForCurrentProcess();
38 std::string sandbox_enabled( 35 std::string sandbox_enabled(
39 command_line->GetSwitchValueASCII(switches::kWalletServiceUseSandbox)); 36 command_line->GetSwitchValueASCII(switches::kWalletServiceUseSandbox));
40 if (!sandbox_enabled.empty()) 37 if (!sandbox_enabled.empty())
41 return sandbox_enabled != "1"; 38 return sandbox_enabled != "1";
42 39
43 // Default to sandbox when --reduce-security-for-testing is passed to allow 40 // Default to sandbox when --reduce-security-for-testing is passed to allow
44 // rAc on http:// pages. 41 // rAc on http:// pages.
45 if (command_line->HasSwitch(::switches::kReduceSecurityForTesting)) 42 if (command_line->HasSwitch(::switches::kReduceSecurityForTesting))
46 return false; 43 return false;
47 44
48 #if defined(ENABLE_PROD_WALLET_SERVICE) 45 #if defined(ENABLE_PROD_WALLET_SERVICE)
49 return true; 46 return true;
50 #else 47 #else
51 return false; 48 return false;
52 #endif 49 #endif
53 } 50 }
54 51
55 GURL GetWalletHostUrl() {
56 const base::CommandLine& command_line =
57 *base::CommandLine::ForCurrentProcess();
58 std::string wallet_service_hostname =
59 command_line.GetSwitchValueASCII(switches::kWalletServiceUrl);
60 if (!wallet_service_hostname.empty())
61 return GURL(wallet_service_hostname);
62 if (IsWalletProductionEnabled())
63 return GURL(kProdWalletServiceUrl);
64 return GURL(kSandboxWalletServiceUrl);
65 }
66
67 GURL GetBaseWalletUrl(size_t user_index) {
68 std::string path = base::StringPrintf("online/v2/u/%" PRIuS "/", user_index);
69 return GetWalletHostUrl().Resolve(path);
70 }
71
72 GURL GetBaseAutocheckoutUrl(size_t user_index) {
73 return GetBaseWalletUrl(user_index).Resolve("wallet/autocheckout/v1/");
74 }
75
76 GURL GetBaseSecureUrl() { 52 GURL GetBaseSecureUrl() {
77 const base::CommandLine& command_line = 53 const base::CommandLine& command_line =
78 *base::CommandLine::ForCurrentProcess(); 54 *base::CommandLine::ForCurrentProcess();
79 std::string wallet_secure_url = 55 std::string wallet_secure_url =
80 command_line.GetSwitchValueASCII(switches::kWalletSecureServiceUrl); 56 command_line.GetSwitchValueASCII(switches::kWalletSecureServiceUrl);
81 if (!wallet_secure_url.empty()) 57 if (!wallet_secure_url.empty())
82 return GURL(wallet_secure_url); 58 return GURL(wallet_secure_url);
83 if (IsWalletProductionEnabled()) 59 if (IsWalletProductionEnabled())
84 return GURL(kProdWalletServiceUrl); 60 return GURL(kProdWalletServiceUrl);
85 return GURL(kSandboxWalletSecureServiceUrl); 61 return GURL(kSandboxWalletSecureServiceUrl);
86 } 62 }
87 63
88 GURL GetBaseEncryptedFrontendUrl(size_t user_index) {
89 const base::CommandLine& command_line =
90 *base::CommandLine::ForCurrentProcess();
91 GURL base_url = IsWalletProductionEnabled() ||
92 command_line.HasSwitch(switches::kWalletServiceUrl) ?
93 GetWalletHostUrl() : GetBaseSecureUrl();
94 std::string path =
95 base::StringPrintf("online-secure/v2/u/%" PRIuS "/autocheckout/v1/",
96 user_index);
97 return base_url.Resolve(path);
98 }
99
100 } // namespace 64 } // namespace
101 65
102 namespace wallet { 66 namespace wallet {
103 67
104 GURL GetGetWalletItemsUrl(size_t user_index) {
105 return GetBaseAutocheckoutUrl(user_index).Resolve("getWalletItemsJwtless");
106 }
107
108 GURL GetGetFullWalletUrl(size_t user_index) {
109 return GetBaseEncryptedFrontendUrl(user_index)
110 .Resolve("getFullWalletJwtless?s7e=otp");
111 }
112
113 GURL GetManageInstrumentsUrl(size_t user_index) { 68 GURL GetManageInstrumentsUrl(size_t user_index) {
114 std::string path = 69 std::string path =
115 base::StringPrintf("manage/w/%" PRIuS "/paymentMethods", user_index); 70 base::StringPrintf("manage/w/%" PRIuS "/paymentMethods", user_index);
116 return GetBaseSecureUrl().Resolve(path); 71 return GetBaseSecureUrl().Resolve(path);
117 } 72 }
118 73
119 GURL GetManageAddressesUrl(size_t user_index) { 74 GURL GetManageAddressesUrl(size_t user_index) {
120 std::string path = 75 std::string path =
121 base::StringPrintf("manage/w/%" PRIuS "/settings/addresses", user_index); 76 base::StringPrintf("manage/w/%" PRIuS "/settings/addresses", user_index);
122 return GetBaseSecureUrl().Resolve(path); 77 return GetBaseSecureUrl().Resolve(path);
123 } 78 }
124 79
125 GURL GetPrivacyNoticeUrl() {
126 return GetWalletHostUrl().Resolve("legaldocument?family=0.privacynotice");
127 }
128
129 GURL GetAcceptLegalDocumentsUrl(size_t user_index) {
130 return GetBaseAutocheckoutUrl(user_index).Resolve("acceptLegalDocument");
131 }
132
133 GURL GetAuthenticateInstrumentUrl(size_t user_index) {
134 return GetBaseEncryptedFrontendUrl(user_index)
135 .Resolve("authenticateInstrument?s7e=cvn");
136 }
137
138 GURL GetSaveToWalletNoEscrowUrl(size_t user_index) {
139 return GetBaseAutocheckoutUrl(user_index).Resolve("saveToWallet");
140 }
141
142 GURL GetSaveToWalletUrl(size_t user_index) {
143 return GetBaseEncryptedFrontendUrl(user_index)
144 .Resolve("saveToWallet?s7e=card_number%3Bcvn");
145 }
146
147 GURL GetPassiveAuthUrl(size_t user_index) {
148 return GetBaseWalletUrl(user_index)
149 .Resolve("passiveauth?isChromePayments=true");
150 }
151
152 GURL GetAddAccountUrl() {
153 GURL url(GaiaUrls::GetInstance()->add_account_url());
154 url = net::AppendQueryParameter(url, "nui", "1");
155 // Prevents promos from showing (see http://crbug.com/235227).
156 url = net::AppendQueryParameter(url, "sarp", "1");
157 url = net::AppendQueryParameter(url,
158 "continue",
159 GetSignInContinueUrl().spec());
160 return url;
161 }
162
163 GURL GetSignInUrl(size_t user_index) {
164 GURL url(GaiaUrls::GetInstance()->service_login_url());
165 url = net::AppendQueryParameter(
166 url, "authuser", base::SizeTToString(user_index));
167 // Prevents promos from showing (see http://crbug.com/235227).
168 url = net::AppendQueryParameter(url, "sarp", "1");
169 url =
170 net::AppendQueryParameter(url, "continue", GetSignInContinueUrl().spec());
171 return url;
172 }
173
174 // The continue url portion of the sign-in URL. This URL is used as a milestone
175 // to determine that the sign-in process is finished. It has to be a Google
176 // domain, use https://, and do almost nothing, but otherwise it's not too
177 // important what the URL actually is: it's not important that this URL has the
178 // ability to generate a gdToken.
179 GURL GetSignInContinueUrl() {
180 return GetPassiveAuthUrl(0);
181 }
182
183 bool IsSignInContinueUrl(const GURL& url, size_t* user_index) {
184 GURL final_url = GetSignInContinueUrl();
185 if (url.scheme() != final_url.scheme() ||
186 url.host() != final_url.host() ||
187 url.path() != final_url.path()) {
188 return false;
189 }
190
191 *user_index = 0;
192 std::string query_str = url.query();
193 url::Component query(0, query_str.length());
194 url::Component key, value;
195 const char kUserIndexKey[] = "authuser";
196 while (url::ExtractQueryKeyValue(query_str.c_str(), &query, &key, &value)) {
197 if (key.is_nonempty() &&
198 query_str.substr(key.begin, key.len) == kUserIndexKey) {
199 base::StringToSizeT(query_str.substr(value.begin, value.len), user_index);
200 break;
201 }
202 }
203
204 return true;
205 }
206
207 bool IsSignInRelatedUrl(const GURL& url) {
208 size_t unused;
209 // Origins are host names which are canonicalized, so case-sensitive is OK.
210 GURL origin = url.GetOrigin();
211 return origin == GetAddAccountUrl().GetOrigin() ||
212 base::StartsWith(origin.host(), "accounts.",
213 base::CompareCase::SENSITIVE) ||
214 IsSignInContinueUrl(url, &unused);
215 }
216
217 bool IsUsingProd() {
218 return GetWalletHostUrl() == GURL(kProdWalletServiceUrl);
219 }
220
221 } // namespace wallet 80 } // namespace wallet
222 } // namespace autofill 81 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698