Commit 7110fa01 authored by Mark Pilgrim's avatar Mark Pilgrim Committed by Commit Bot

Migrate PaymentsClient to SimpleURLLoader

TBR=estade@chromium.org

Bug: 844930
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I554e7e68e31fd05a9aaef014886b0149f41cebb8
Reviewed-on: https://chromium-review.googlesource.com/1053869
Commit-Queue: Mark Pilgrim <pilgrim@chromium.org>
Reviewed-by: default avatarPeter Lee <pkl@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@chromium.org>
Reviewed-by: default avatarJared Saul <jsaul@google.com>
Reviewed-by: default avatarMathieu Perreault <mathp@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572330}
parent 4c4d48f1
......@@ -67,6 +67,17 @@ void SaveCardBubbleViewsBrowserTestBase::SetUpOnMainThread() {
url_fetcher_factory_ = std::make_unique<net::FakeURLFetcherFactory>(
new net::URLFetcherImplFactory());
// Set up the URL loader factory for the payments client so we can intercept
// those network requests too.
test_shared_loader_factory_ =
base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
&test_url_loader_factory_);
ContentAutofillDriver::GetForRenderFrameHost(
GetActiveWebContents()->GetMainFrame())
->autofill_manager()
->payments_client()
->set_url_loader_factory_for_testing(test_shared_loader_factory_);
// Set up this class as the ObserverForTest implementation.
CreditCardSaveManager* credit_card_save_manager =
ContentAutofillDriver::GetForRenderFrameHost(
......@@ -251,21 +262,19 @@ void SaveCardBubbleViewsBrowserTestBase::
}
void SaveCardBubbleViewsBrowserTestBase::SetUploadDetailsRpcPaymentsAccepts() {
url_fetcher_factory_->SetFakeResponse(
GURL(kURLGetUploadDetailsRequest), kResponseGetUploadDetailsSuccess,
net::HTTP_OK, net::URLRequestStatus::SUCCESS);
test_url_loader_factory()->AddResponse(kURLGetUploadDetailsRequest,
kResponseGetUploadDetailsSuccess);
}
void SaveCardBubbleViewsBrowserTestBase::SetUploadDetailsRpcPaymentsDeclines() {
url_fetcher_factory_->SetFakeResponse(
GURL(kURLGetUploadDetailsRequest), kResponseGetUploadDetailsFailure,
net::HTTP_OK, net::URLRequestStatus::SUCCESS);
test_url_loader_factory()->AddResponse(kURLGetUploadDetailsRequest,
kResponseGetUploadDetailsFailure);
}
void SaveCardBubbleViewsBrowserTestBase::SetUploadDetailsRpcServerError() {
url_fetcher_factory_->SetFakeResponse(
GURL(kURLGetUploadDetailsRequest), kResponseGetUploadDetailsSuccess,
net::HTTP_INTERNAL_SERVER_ERROR, net::URLRequestStatus::FAILED);
test_url_loader_factory()->AddResponse(kURLGetUploadDetailsRequest,
kResponseGetUploadDetailsSuccess,
net::HTTP_INTERNAL_SERVER_ERROR);
}
void SaveCardBubbleViewsBrowserTestBase::ClickOnDialogView(views::View* view) {
......@@ -355,4 +364,9 @@ void SaveCardBubbleViewsBrowserTestBase::WaitForObservedEvent() {
event_waiter_->Wait();
}
network::TestURLLoaderFactory*
SaveCardBubbleViewsBrowserTestBase::test_url_loader_factory() {
return &test_url_loader_factory_;
}
} // namespace autofill
......@@ -20,6 +20,9 @@
#include "content/public/browser/web_contents_observer.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace device {
......@@ -101,11 +104,15 @@ class SaveCardBubbleViewsBrowserTestBase
// Wait for the event(s) passed to ResetEventWaiter*() to occur.
void WaitForObservedEvent();
network::TestURLLoaderFactory* test_url_loader_factory();
base::test::ScopedFeatureList scoped_feature_list_;
private:
std::unique_ptr<DialogEventWaiter<DialogEvent>> event_waiter_;
std::unique_ptr<net::FakeURLFetcherFactory> url_fetcher_factory_;
network::TestURLLoaderFactory test_url_loader_factory_;
scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
std::unique_ptr<device::ScopedGeolocationOverrider> geolocation_overrider_;
const std::string test_file_path_;
......
......@@ -26,6 +26,8 @@
#include "components/payments/core/payment_request_delegate.h"
#include "components/strings/grit/components_strings.h"
#include "components/vector_icons/vector_icons.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
......@@ -56,8 +58,9 @@ CvcUnmaskViewController::CvcUnmaskViewController(
credit_card_(credit_card),
web_contents_(web_contents),
payments_client_(
Profile::FromBrowserContext(web_contents_->GetBrowserContext())
->GetRequestContext(),
content::BrowserContext::GetDefaultStoragePartition(
web_contents_->GetBrowserContext())
->GetURLLoaderFactoryForBrowserProcess(),
Profile::FromBrowserContext(web_contents_->GetBrowserContext())
->GetPrefs(),
IdentityManagerFactory::GetForProfile(
......
......@@ -80,6 +80,13 @@ net::URLRequestContextGetter* ContentAutofillDriver::GetURLRequestContext() {
GetURLRequestContext();
}
scoped_refptr<network::SharedURLLoaderFactory>
ContentAutofillDriver::GetURLLoaderFactory() {
return content::BrowserContext::GetDefaultStoragePartition(
render_frame_host_->GetSiteInstance()->GetBrowserContext())
->GetURLLoaderFactoryForBrowserProcess();
}
bool ContentAutofillDriver::RendererIsAvailable() {
return render_frame_host_->GetRenderViewHost() != nullptr;
}
......
......@@ -51,6 +51,7 @@ class ContentAutofillDriver : public AutofillDriver,
// AutofillDriver:
bool IsIncognito() const override;
net::URLRequestContextGetter* GetURLRequestContext() override;
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
bool RendererIsAvailable() override;
void SendFormDataToRenderer(int query_id,
RendererFormDataAction action,
......
......@@ -340,6 +340,8 @@ static_library("test_support") {
"//components/ukm:test_support",
"//google_apis:test_support",
"//services/identity/public/cpp:test_support",
"//services/network:test_support",
"//services/network/public/cpp",
"//skia",
"//testing/gtest",
"//third_party/libaddressinput:util",
......
......@@ -24,6 +24,7 @@ include_rules = [
"+services/identity/public",
"+services/metrics/public",
"+services/network/public",
"+services/network/test",
"+sql",
"+third_party/fips181",
"+third_party/libaddressinput", # For address i18n.
......
......@@ -7,12 +7,17 @@
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "components/autofill/core/common/form_data.h"
namespace net {
class URLRequestContextGetter;
}
namespace network {
class SharedURLLoaderFactory;
}
namespace gfx {
class RectF;
}
......@@ -42,6 +47,10 @@ class AutofillDriver {
// Returns the URL request context information associated with this driver.
virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
// Returns the URL loader factory associated with this driver.
virtual scoped_refptr<network::SharedURLLoaderFactory>
GetURLLoaderFactory() = 0;
// Returns true iff the renderer is available for communication.
virtual bool RendererIsAvailable() = 0;
......
......@@ -69,6 +69,7 @@
#include "components/prefs/pref_service.h"
#include "components/security_state/core/security_state.h"
#include "components/strings/grit/components_strings.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/geometry/rect.h"
#include "url/gurl.h"
......@@ -1150,7 +1151,7 @@ AutofillManager::AutofillManager(
: AutofillHandler(driver),
client_(client),
payments_client_(std::make_unique<payments::PaymentsClient>(
driver->GetURLRequestContext(),
driver->GetURLLoaderFactory(),
client->GetPrefs(),
client->GetIdentityManager(),
/*unmask_delegate=*/this,
......
......@@ -274,6 +274,9 @@ class AutofillManager : public AutofillHandler,
download_manager_.reset(manager);
}
// Exposed for testing.
payments::PaymentsClient* payments_client() { return payments_client_.get(); }
// Exposed for testing.
void set_payments_client(payments::PaymentsClient* payments_client) {
payments_client_.reset(payments_client);
......
......@@ -47,6 +47,7 @@
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_test_util.h"
#include "services/metrics/public/cpp/ukm_builders.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
......@@ -100,7 +101,7 @@ class CreditCardSaveManagerTest : public testing::Test {
base::ThreadTaskRunnerHandle::Get());
autofill_driver_->SetURLRequestContext(request_context_.get());
payments_client_ = new payments::TestPaymentsClient(
autofill_driver_->GetURLRequestContext(), autofill_client_.GetPrefs(),
autofill_driver_->GetURLLoaderFactory(), autofill_client_.GetPrefs(),
autofill_client_.GetIdentityManager(),
/*unmask_delegate=*/nullptr,
// Will be set by CreditCardSaveManager's ctor
......
......@@ -22,6 +22,9 @@
#include "components/prefs/pref_service.h"
#include "components/prefs/testing_pref_service.h"
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -68,14 +71,17 @@ class FullCardRequestTest : public testing::Test,
public:
FullCardRequestTest()
: request_context_(new net::TestURLRequestContextGetter(
base::ThreadTaskRunnerHandle::Get())) {
base::ThreadTaskRunnerHandle::Get())),
test_shared_loader_factory_(
base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
&test_url_loader_factory_)) {
std::unique_ptr<TestingPrefServiceSimple> pref_service(
new TestingPrefServiceSimple());
pref_service->registry()->RegisterDoublePref(
prefs::kAutofillBillingCustomerNumber, 0.0);
autofill_client_.SetPrefs(std::move(pref_service));
payments_client_ = std::make_unique<PaymentsClient>(
request_context_.get(), autofill_client_.GetPrefs(),
test_shared_loader_factory_, autofill_client_.GetPrefs(),
autofill_client_.GetIdentityManager(), this, nullptr);
request_ = std::make_unique<FullCardRequest>(
&autofill_client_, payments_client_.get(), &personal_data_);
......@@ -112,6 +118,8 @@ class FullCardRequestTest : public testing::Test,
MockUIDelegate ui_delegate_;
TestAutofillClient autofill_client_;
scoped_refptr<net::TestURLRequestContextGetter> request_context_;
network::TestURLLoaderFactory test_url_loader_factory_;
scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
std::unique_ptr<PaymentsClient> payments_client_;
std::unique_ptr<FullCardRequest> request_;
......
......@@ -7,6 +7,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "components/autofill/core/browser/autofill_client.h"
#include "components/autofill/core/browser/autofill_profile.h"
......@@ -14,17 +15,17 @@
#include "components/autofill/core/browser/credit_card.h"
#include "components/prefs/pref_service.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "net/url_request/url_fetcher_delegate.h"
namespace identity {
class IdentityManager;
class PrimaryAccountAccessTokenFetcher;
} // namespace identity
namespace net {
class URLFetcher;
class URLRequestContextGetter;
}
namespace network {
struct ResourceRequest;
class SimpleURLLoader;
class SharedURLLoaderFactory;
} // namespace network
namespace autofill {
......@@ -62,7 +63,7 @@ class PaymentsClientSaveDelegate {
// request will cancel a pending request.
// Tests are located in
// src/components/autofill/content/browser/payments/payments_client_unittest.cc.
class PaymentsClient : public net::URLFetcherDelegate {
class PaymentsClient {
public:
// The names of the fields used to send non-location elements as part of an
// address. Used in the implementation and in tests which verify that these
......@@ -100,19 +101,20 @@ class PaymentsClient : public net::URLFetcherDelegate {
std::vector<const char*> active_experiments;
};
// |context_getter| is reference counted so it has no lifetime or ownership
// requirements. |pref_service| is used to get the registered preference
// value, |identity_manager|, |unmask_delegate| and |save_delegate| must all
// outlive |this|. Either delegate might be nullptr. |is_off_the_record|
// denotes incognito mode.
PaymentsClient(net::URLRequestContextGetter* context_getter,
PrefService* pref_service,
identity::IdentityManager* identity_manager,
PaymentsClientUnmaskDelegate* unmask_delegate,
PaymentsClientSaveDelegate* save_delegate,
bool is_off_the_record = false);
~PaymentsClient() override;
// |url_loader_factory| is reference counted so it has no lifetime or
// ownership requirements. |pref_service| is used to get the registered
// preference value, |identity_manager|, |unmask_delegate| and |save_delegate|
// must all outlive |this|. Either delegate might be nullptr.
// |is_off_the_record| denotes incognito mode.
PaymentsClient(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
PrefService* pref_service,
identity::IdentityManager* identity_manager,
PaymentsClientUnmaskDelegate* unmask_delegate,
PaymentsClientSaveDelegate* save_delegate,
bool is_off_the_record = false);
virtual ~PaymentsClient();
// Starts fetching the OAuth2 token in anticipation of future Payments
// requests. Called as an optimization, but not strictly necessary. Should
......@@ -156,15 +158,26 @@ class PaymentsClient : public net::URLFetcherDelegate {
// Cancels and clears the current |request_|.
void CancelRequest();
// Exposed for testing.
void set_url_loader_factory_for_testing(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
private:
friend class PaymentsClientTest;
// Initiates a Payments request using the state in |request|. If
// |authenticate| is true, ensures that an OAuth token is avialble first.
// Takes ownership of |request|.
void IssueRequest(std::unique_ptr<PaymentsRequest> request,
bool authenticate);
// net::URLFetcherDelegate:
void OnURLFetchComplete(const net::URLFetcher* source) override;
// Creates |resource_request_| to be used later in StartRequest().
void InitializeResourceRequest();
// Callback from |simple_url_loader_|.
void OnSimpleLoaderComplete(std::unique_ptr<std::string> response_body);
void OnSimpleLoaderCompleteInternal(int response_code,
const std::string& data);
// Callback that handles a completed access token request.
void AccessTokenFetchFinished(GoogleServiceAuthError error,
......@@ -173,17 +186,17 @@ class PaymentsClient : public net::URLFetcherDelegate {
// Handles a completed access token request in the case of failure.
void AccessTokenError(const GoogleServiceAuthError& error);
// Creates |url_fetcher_| based on the current state of |request_|.
void InitializeUrlFetcher();
// Initiates a new OAuth2 token request.
void StartTokenFetch(bool invalidate_old);
// Adds the token to |url_fetcher_| and starts the request.
// Adds the token to |simple_url_loader_| and starts the request.
void SetOAuth2TokenAndStartRequest();
// The context for the request.
scoped_refptr<net::URLRequestContextGetter> context_getter_;
// Creates |simple_url_loader_| and calls it to start the request.
void StartRequest();
// The URL loader factory for the request.
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
// The pref service for this client.
PrefService* const pref_service_;
......@@ -198,8 +211,11 @@ class PaymentsClient : public net::URLFetcherDelegate {
// The current request.
std::unique_ptr<PaymentsRequest> request_;
// The fetcher being used to issue the current request.
std::unique_ptr<net::URLFetcher> url_fetcher_;
// The resource request being used to issue the current request.
std::unique_ptr<network::ResourceRequest> resource_request_;
// The URL loader being used to issue the current request.
std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
// The current OAuth2 token fetcher.
std::unique_ptr<identity::PrimaryAccountAccessTokenFetcher> token_fetcher_;
......
......@@ -5,17 +5,18 @@
#include "components/autofill/core/browser/payments/test_payments_client.h"
#include "base/strings/utf_string_conversions.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
namespace autofill {
namespace payments {
TestPaymentsClient::TestPaymentsClient(
net::URLRequestContextGetter* context_getter,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_,
PrefService* pref_service,
identity::IdentityManager* identity_manager,
payments::PaymentsClientUnmaskDelegate* unmask_delegate,
payments::PaymentsClientSaveDelegate* save_delegate)
: PaymentsClient(context_getter,
: PaymentsClient(url_loader_factory_,
pref_service,
identity_manager,
unmask_delegate,
......
......@@ -10,16 +10,21 @@
#include "components/autofill/core/browser/payments/payments_client.h"
namespace network {
class SharedURLLoaderFactory;
} // namespace network
namespace autofill {
namespace payments {
class TestPaymentsClient : public payments::PaymentsClient {
public:
TestPaymentsClient(net::URLRequestContextGetter* context_getter,
PrefService* pref_service,
identity::IdentityManager* identity_manager,
payments::PaymentsClientUnmaskDelegate* unmask_delegate,
payments::PaymentsClientSaveDelegate* save_delegate);
TestPaymentsClient(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_,
PrefService* pref_service,
identity::IdentityManager* identity_manager,
payments::PaymentsClientUnmaskDelegate* unmask_delegate,
payments::PaymentsClientSaveDelegate* save_delegate);
~TestPaymentsClient() override;
......
......@@ -3,12 +3,19 @@
// found in the LICENSE file.
#include "components/autofill/core/browser/test_autofill_driver.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
#include "ui/gfx/geometry/rect_f.h"
namespace autofill {
TestAutofillDriver::TestAutofillDriver() : url_request_context_(nullptr) {}
TestAutofillDriver::TestAutofillDriver()
: url_request_context_(nullptr),
test_shared_loader_factory_(
base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
&test_url_loader_factory_)) {}
TestAutofillDriver::~TestAutofillDriver() {}
......@@ -20,6 +27,11 @@ net::URLRequestContextGetter* TestAutofillDriver::GetURLRequestContext() {
return url_request_context_;
}
scoped_refptr<network::SharedURLLoaderFactory>
TestAutofillDriver::GetURLLoaderFactory() {
return test_shared_loader_factory_;
}
bool TestAutofillDriver::RendererIsAvailable() {
return true;
}
......
......@@ -7,7 +7,9 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "components/autofill/core/browser/autofill_driver.h"
#include "services/network/test/test_url_loader_factory.h"
namespace autofill {
......@@ -22,6 +24,7 @@ class TestAutofillDriver : public AutofillDriver {
// Returns the value passed in to the last call to |SetURLRequestContext()|
// or NULL if that method has never been called.
net::URLRequestContextGetter* GetURLRequestContext() override;
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
bool RendererIsAvailable() override;
void SendFormDataToRenderer(int query_id,
RendererFormDataAction action,
......@@ -57,6 +60,8 @@ class TestAutofillDriver : public AutofillDriver {
private:
net::URLRequestContextGetter* url_request_context_;
network::TestURLLoaderFactory test_url_loader_factory_;
scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
bool is_incognito_ = false;
bool did_interact_with_credit_card_form_ = false;
......
......@@ -12,6 +12,7 @@
#include "components/autofill/core/browser/test_form_data_importer.h"
#include "components/autofill/core/browser/test_form_structure.h"
#include "components/autofill/core/browser/test_personal_data_manager.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace autofill {
......@@ -21,10 +22,10 @@ TestAutofillManager::TestAutofillManager(AutofillDriver* driver,
TestPersonalDataManager* personal_data)
: AutofillManager(driver, client, personal_data),
personal_data_(personal_data),
context_getter_(driver->GetURLRequestContext()),
url_loader_factory_(driver->GetURLLoaderFactory()),
client_(client) {
set_payments_client(new payments::PaymentsClient(
context_getter_, client->GetPrefs(), client->GetIdentityManager(),
url_loader_factory_, client->GetPrefs(), client->GetIdentityManager(),
/*unmask_delegate=*/this,
/*save_delegate=*/nullptr));
}
......
......@@ -16,8 +16,8 @@
using base::TimeTicks;
namespace net {
class URLRequestContextGetter;
namespace network {
class SharedURLLoaderFactory;
}
namespace autofill {
......@@ -89,7 +89,7 @@ class TestAutofillManager : public AutofillManager {
private:
TestPersonalDataManager* personal_data_; // Weak reference.
net::URLRequestContextGetter* context_getter_ = nullptr; // Weak reference.
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
TestFormDataImporter* test_form_data_importer_ = nullptr;
bool autofill_enabled_ = true;
bool credit_card_enabled_ = true;
......
......@@ -39,6 +39,7 @@ source_set("browser") {
"//components/prefs/ios",
"//google_apis",
"//ios/web",
"//services/network/public/cpp",
"//ui/gfx/geometry",
]
}
......
include_rules = [
"+ios/web/public",
"+services/network/public/cpp",
"+third_party/ocmock",
]
......@@ -38,6 +38,7 @@ class AutofillDriverIOS : public AutofillDriver,
// AutofillDriver:
bool IsIncognito() const override;
net::URLRequestContextGetter* GetURLRequestContext() override;
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
bool RendererIsAvailable() override;
void SendFormDataToRenderer(int query_id,
RendererFormDataAction action,
......
......@@ -10,6 +10,8 @@
#include "ios/web/public/browser_state.h"
#import "ios/web/public/origin_util.h"
#include "ios/web/public/web_state/web_state.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "ui/gfx/geometry/rect_f.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
......@@ -59,6 +61,12 @@ net::URLRequestContextGetter* AutofillDriverIOS::GetURLRequestContext() {
return web_state_->GetBrowserState()->GetRequestContext();
}
scoped_refptr<network::SharedURLLoaderFactory>
AutofillDriverIOS::GetURLLoaderFactory() {
return base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
web_state_->GetBrowserState()->GetURLLoaderFactory());
}
bool AutofillDriverIOS::RendererIsAvailable() {
return true;
}
......
......@@ -69,6 +69,7 @@ static_library("core") {
"//net",
"//services/metrics/public/cpp:metrics_cpp",
"//services/metrics/public/cpp:ukm_builders",
"//services/network/public/cpp",
"//third_party/re2",
"//ui/base",
"//url",
......@@ -100,6 +101,8 @@ static_library("test_support") {
"//components/pref_registry",
"//components/prefs",
"//net:test_support",
"//services/network:test_support",
"//services/network/public/cpp",
]
}
......@@ -142,6 +145,7 @@ source_set("unit_tests") {
"//net:test_support",
"//services/metrics/public/cpp:ukm_builders",
"//services/network:test_support",
"//services/network/public/cpp",
"//testing/gmock",
"//testing/gtest",
"//third_party/libaddressinput:test_support",
......
......@@ -22,6 +22,9 @@
#include "components/payments/core/test_payment_request_delegate.h"
#include "components/strings/grit/components_strings.h"
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
......@@ -64,9 +67,10 @@ class FakePaymentRequestDelegate
: locale_("en-US"),
last_committed_url_("https://shop.com"),
personal_data_("en-US"),
request_context_(new net::TestURLRequestContextGetter(
base::ThreadTaskRunnerHandle::Get())),
payments_client_(request_context_.get(),
test_shared_loader_factory_(
base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
&test_url_loader_factory_)),
payments_client_(test_shared_loader_factory_,
nullptr,
nullptr,
this,
......@@ -120,7 +124,8 @@ class FakePaymentRequestDelegate
const GURL last_committed_url_;
autofill::TestAddressNormalizer address_normalizer_;
autofill::PersonalDataManager personal_data_;
scoped_refptr<net::TestURLRequestContextGetter> request_context_;
network::TestURLLoaderFactory test_url_loader_factory_;
scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
autofill::TestAutofillClient autofill_client_;
autofill::payments::PaymentsClient payments_client_;
autofill::payments::FullCardRequest full_card_request_;
......
......@@ -13,8 +13,10 @@ TestPaymentRequestDelegate::TestPaymentRequestDelegate(
: personal_data_manager_(personal_data_manager),
locale_("en-US"),
last_committed_url_("https://shop.com"),
request_context_(new TestURLRequestContextGetter(loop_.task_runner())),
payments_client_(request_context_.get(),
test_shared_loader_factory_(
base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
&test_url_loader_factory_)),
payments_client_(test_shared_loader_factory_,
nullptr,
nullptr,
/*unmask_delegate=*/&payments_client_delegate_,
......@@ -108,19 +110,4 @@ void TestPaymentsClientDelegate::OnDidGetRealPan(
autofill::AutofillClient::PaymentsRpcResult result,
const std::string& real_pan) {}
TestURLRequestContextGetter::TestURLRequestContextGetter(
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
: task_runner_(task_runner) {}
TestURLRequestContextGetter::~TestURLRequestContextGetter() {}
net::URLRequestContext* TestURLRequestContextGetter::GetURLRequestContext() {
return nullptr;
}
scoped_refptr<base::SingleThreadTaskRunner>
TestURLRequestContextGetter::GetNetworkTaskRunner() const {
return task_runner_;
}
} // namespace payments
......@@ -15,6 +15,9 @@
#include "components/autofill/core/browser/test_autofill_client.h"
#include "components/payments/core/payment_request_delegate.h"
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
namespace payments {
......@@ -30,20 +33,6 @@ class TestPaymentsClientDelegate
const std::string& real_pan) override;
};
class TestURLRequestContextGetter : public net::URLRequestContextGetter {
public:
explicit TestURLRequestContextGetter(
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
net::URLRequestContext* GetURLRequestContext() override;
scoped_refptr<base::SingleThreadTaskRunner> GetNetworkTaskRunner()
const override;
private:
~TestURLRequestContextGetter() override;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
};
class TestPaymentRequestDelegate : public PaymentRequestDelegate {
public:
explicit TestPaymentRequestDelegate(
......@@ -82,7 +71,8 @@ class TestPaymentRequestDelegate : public PaymentRequestDelegate {
std::string locale_;
const GURL last_committed_url_;
autofill::TestAddressNormalizer address_normalizer_;
scoped_refptr<TestURLRequestContextGetter> request_context_;
network::TestURLLoaderFactory test_url_loader_factory_;
scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
autofill::TestAutofillClient autofill_client_;
autofill::payments::PaymentsClient payments_client_;
autofill::payments::FullCardRequest full_card_request_;
......
......@@ -171,8 +171,10 @@ network::mojom::URLLoaderFactory* BrowserState::GetURLLoaderFactory() {
DCHECK(!network_context_);
DCHECK(!network_context_owner_);
net::URLRequestContextGetter* request_context = GetRequestContext();
DCHECK(request_context);
network_context_owner_ = std::make_unique<NetworkContextOwner>(
GetRequestContext(), &network_context_);
request_context, &network_context_);
auto url_loader_factory_params =
network::mojom::URLLoaderFactoryParams::New();
url_loader_factory_params->process_id = network::mojom::kBrowserProcessId;
......
......@@ -309,6 +309,18 @@ ios_web_view_test_sources = [
"internal/translate/fake_web_view_translate_client.mm",
]
source_set("run_all_unittests") {
testonly = true
sources = [
"test/run_all_unittests.cc",
]
deps = [
"//base",
"//base/test:test_support",
"//mojo/edk",
]
}
test("ios_web_view_unittests") {
testonly = true
sources = [
......@@ -332,8 +344,8 @@ test("ios_web_view_unittests") {
sources += ios_web_view_test_sources
deps = [
":run_all_unittests",
"test:test_support",
"//base/test:run_all_unittests",
"//components/autofill/core/browser:test_support",
"//components/autofill/ios/browser:test_support",
"//components/prefs:test_support",
......
......@@ -18,6 +18,7 @@
#import "ios/web/public/test/fakes/crw_test_js_injection_receiver.h"
#import "ios/web/public/test/fakes/test_web_state.h"
#include "ios/web/public/test/test_web_thread_bundle.h"
#include "ios/web/public/web_client.h"
#include "ios/web/public/web_state/form_activity_params.h"
#import "ios/web_view/internal/autofill/cwv_autofill_suggestion_internal.h"
#include "ios/web_view/internal/web_view_browser_state.h"
......@@ -49,6 +50,7 @@ NSString* const kTestFieldValue = @"FieldValue";
class CWVAutofillControllerTest : public PlatformTest {
protected:
CWVAutofillControllerTest() : browser_state_(/*off_the_record=*/false) {
web::SetWebClient(&web_client_);
l10n_util::OverrideLocaleWithCocoaLocale();
web_state_.SetBrowserState(&browser_state_);
......@@ -71,6 +73,7 @@ class CWVAutofillControllerTest : public PlatformTest {
JSSuggestionManager:js_suggestion_manager_];
};
web::WebClient web_client_;
web::TestWebThreadBundle web_thread_bundle_;
ios_web_view::WebViewBrowserState browser_state_;
web::TestWebState web_state_;
......
......@@ -87,8 +87,10 @@ net::URLRequestContext* WebViewURLRequestContextGetter::GetURLRequestContext() {
new net::CookieStoreIOSPersistent(persistent_store.get()));
storage_->set_cookie_store(std::move(cookie_store));
web::WebClient* web_client = web::GetWebClient();
DCHECK(web_client);
std::string user_agent =
web::GetWebClient()->GetUserAgent(web::UserAgentType::MOBILE);
web_client->GetUserAgent(web::UserAgentType::MOBILE);
storage_->set_http_user_agent_settings(
std::make_unique<net::StaticHttpUserAgentSettings>("en-us,en",
......
......@@ -2,5 +2,6 @@ include_rules = [
"+base",
"+ios/testing",
"+ios/web_view/public",
"+mojo/edk/embedder",
"+net",
]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/bind.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/test_suite.h"
#include "mojo/edk/embedder/embedder.h"
int main(int argc, char** argv) {
base::TestSuite test_suite(argc, argv);
mojo::edk::Init();
return base::LaunchUnitTests(
argc, argv,
base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite)));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment