Chromium Code Reviews| Index: android_webview/browser/aw_cookie_access_policy_unittest.cc |
| diff --git a/android_webview/browser/aw_cookie_access_policy_unittest.cc b/android_webview/browser/aw_cookie_access_policy_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8c8b3d62d03cf325135f807c1307c7d7da2372c8 |
| --- /dev/null |
| +++ b/android_webview/browser/aw_cookie_access_policy_unittest.cc |
| @@ -0,0 +1,236 @@ |
| +// Copyright (c) 2012 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 "android_webview/browser/aw_cookie_access_policy.h" |
| + |
| +#include "base/run_loop.h" |
| +#include "net/base/request_priority.h" |
| +#include "net/cookies/canonical_cookie.h" |
| +#include "net/url_request/url_request_test_util.h" |
| + |
| +#include "testing/gmock/include/gmock/gmock.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace content { |
| +class ResourceContext; |
| +} |
| + |
| +namespace net { |
| +class CookieOptions; |
| +} |
| + |
| +class GURL; |
| + |
| +using android_webview::AwCookieAccessPolicy; |
| +using net::CookieList; |
| +using net::TestDelegate; |
| +using net::TestJobInterceptor; |
| +using net::TestNetworkDelegate; |
| +using net::TestURLRequestContext; |
| +using net::TestURLRequest; |
| +using testing::Test; |
| + |
| +class AwCookieAccessPolicyTest : public Test { |
| + public: |
| + AwCookieAccessPolicyTest() |
| + : loop_(), |
| + context_(), |
| + url_request_delegate_(), |
| + network_delegate_(), |
| + first_party_request_(), |
| + url_google_("http://www.google.izzle"), |
| + url_google_analytics_("http://www.googleanalytics.izzle") { |
|
mkosiba (inactive)
2014/04/17 18:27:30
url_first_party_("http://first/")
url_third_party_
hjd_google
2014/04/22 13:34:41
Yeah, these were the values from the existing cook
|
| + } |
| + |
| + virtual void SetUp() { |
| + context_.set_network_delegate(&network_delegate_); |
| + first_party_request_.reset(new TestURLRequest(url_google_, |
| + net::DEFAULT_PRIORITY, |
| + &url_request_delegate_, |
| + &context_)); |
| + first_party_request_->set_method("GET"); |
| + |
| + third_party_request_.reset(new TestURLRequest(url_google_analytics_, |
| + net::DEFAULT_PRIORITY, |
| + &url_request_delegate_, |
| + &context_)); |
| + third_party_request_->set_method("GET"); |
| + third_party_request_->set_first_party_for_cookies(url_google_); |
| + |
|
mkosiba (inactive)
2014/04/17 18:27:30
are any of the lines below actually needed for the
hjd_google
2014/04/22 13:34:41
Apparently not, I'm confused about what errors I w
|
| + first_party_request_->Start(); |
| + third_party_request_->Start(); |
| + |
| + // The TestDelegate will quit the message loop on request completion. |
| + base::MessageLoop::current()->Run(); |
| + } |
| + |
| + |
| + bool GetGlobalAllowAccess() { |
| + return AwCookieAccessPolicy::GetInstance()->GetGlobalAllowAccess(); |
|
mkosiba (inactive)
2014/04/17 18:27:30
to make these shorter maybe add a method to your t
hjd_google
2014/04/22 13:34:41
Done.
|
| + } |
| + |
| + void SetGlobalAllowAccess(bool allow) { |
| + AwCookieAccessPolicy::GetInstance()->SetGlobalAllowAccess(allow); |
| + } |
| + |
| + bool GetThirdPartyAllowAccess() { |
| + return AwCookieAccessPolicy::GetInstance()->GetThirdPartyAllowAccess(); |
| + } |
| + |
| + void SetThirdPartyAllowAccess(bool allow) { |
| + AwCookieAccessPolicy::GetInstance()->SetThirdPartyAllowAccess(allow); |
| + } |
| + |
| + bool OnCanGetCookies(const net::URLRequest& request, |
| + const net::CookieList& cookie_list) { |
| + return AwCookieAccessPolicy::GetInstance() |
| + ->OnCanGetCookies(request, cookie_list); |
| + } |
| + |
| + bool OnCanSetCookie(const net::URLRequest& request, |
| + const std::string& cookie_line, |
| + net::CookieOptions* options) { |
| + return AwCookieAccessPolicy::GetInstance() |
| + ->OnCanSetCookie(request, cookie_line, options); |
| + } |
| + |
| + bool AllowGetCookie(const GURL& url, |
| + const GURL& first_party, |
| + const net::CookieList& cookie_list, |
| + content::ResourceContext* context, |
| + int render_process_id, |
| + int render_frame_id) { |
| + return AwCookieAccessPolicy::GetInstance() |
| + ->AllowGetCookie(url, |
| + first_party, |
| + cookie_list, |
| + context, |
| + render_process_id, |
| + render_frame_id); |
| + } |
| + |
| + bool AllowSetCookie(const GURL& url, |
| + const GURL& first_party, |
| + const std::string& cookie_line, |
| + content::ResourceContext* context, |
| + int render_process_id, |
| + int render_frame_id, |
| + net::CookieOptions* options) { |
| + return AwCookieAccessPolicy::GetInstance() |
| + ->AllowSetCookie(url, |
| + first_party, |
| + cookie_line, |
| + context, |
| + render_process_id, |
| + render_frame_id, |
| + options); |
| + } |
| + |
| + protected: |
| + base::MessageLoopForIO loop_; |
| + TestURLRequestContext context_; |
| + TestDelegate url_request_delegate_; |
| + TestNetworkDelegate network_delegate_; |
| + scoped_ptr<TestURLRequest> first_party_request_; |
| + scoped_ptr<TestURLRequest> third_party_request_; |
| + GURL url_google_; |
| + GURL url_google_analytics_; |
| +}; |
| + |
| +TEST_F(AwCookieAccessPolicyTest, AllowAllCookies) { |
| + SetGlobalAllowAccess(true); |
| + SetThirdPartyAllowAccess(true); |
| + |
| + // First party |
| + EXPECT_TRUE(AllowSetCookie(url_google_, url_google_, "", NULL, 0, 0, NULL)); |
|
mkosiba (inactive)
2014/04/17 18:27:30
since you've already bothered to write test wrappe
hjd_google
2014/04/22 13:34:41
Done.
|
| + EXPECT_TRUE(AllowGetCookie(url_google_, |
| + url_google_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_TRUE(OnCanGetCookies(*first_party_request_, CookieList())); |
| + EXPECT_TRUE(OnCanSetCookie(*first_party_request_, "", NULL)); |
| + |
| + // Third party |
| + EXPECT_TRUE(AllowSetCookie(url_google_, |
| + url_google_analytics_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_TRUE(AllowGetCookie(url_google_, |
| + url_google_analytics_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_TRUE(OnCanGetCookies(*third_party_request_, CookieList())); |
| + EXPECT_TRUE(OnCanSetCookie(*third_party_request_, "", NULL)); |
| +} |
| + |
| +TEST_F(AwCookieAccessPolicyTest, BlockAllCookies) { |
| + SetGlobalAllowAccess(false); |
| + SetThirdPartyAllowAccess(false); |
| + |
| + EXPECT_FALSE(AllowSetCookie(url_google_, url_google_, "", NULL, 0, 0, NULL)); |
| + EXPECT_FALSE(AllowGetCookie(url_google_, |
| + url_google_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_FALSE(OnCanGetCookies(*first_party_request_, CookieList())); |
| + EXPECT_FALSE(OnCanSetCookie(*first_party_request_, "", NULL)); |
| + |
| + EXPECT_FALSE(AllowSetCookie(url_google_, |
| + url_google_analytics_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_FALSE(AllowGetCookie(url_google_, |
| + url_google_analytics_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_FALSE(OnCanGetCookies(*third_party_request_, CookieList())); |
| + EXPECT_FALSE(OnCanSetCookie(*third_party_request_, "", NULL)); |
| + |
| + // Even if ThirdPartyAllowAccess is true. |
| + SetThirdPartyAllowAccess(true); |
|
mkosiba (inactive)
2014/04/17 18:27:30
this should probably be a separate test
hjd_google
2014/04/22 13:34:41
Done.
|
| + |
| + EXPECT_FALSE(AllowSetCookie(url_google_, |
| + url_google_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_FALSE(AllowGetCookie(url_google_, |
| + url_google_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_FALSE(OnCanGetCookies(*first_party_request_, CookieList())); |
| + EXPECT_FALSE(OnCanSetCookie(*first_party_request_, "", NULL)); |
| + |
| + EXPECT_FALSE(AllowSetCookie(url_google_, |
| + url_google_analytics_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_FALSE(AllowGetCookie(url_google_, |
| + url_google_analytics_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_FALSE(OnCanGetCookies(*third_party_request_, CookieList())); |
| + EXPECT_FALSE(OnCanSetCookie(*third_party_request_, "", NULL)); |
| +} |
| + |
| +TEST_F(AwCookieAccessPolicyTest, FirstPartyCookiesOnly) { |
| + SetGlobalAllowAccess(true); |
| + SetThirdPartyAllowAccess(false); |
| + |
| + EXPECT_TRUE(AllowSetCookie(url_google_, |
| + url_google_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_TRUE(AllowGetCookie(url_google_, |
| + url_google_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_TRUE(OnCanGetCookies(*first_party_request_, CookieList())); |
| + EXPECT_TRUE(OnCanSetCookie(*first_party_request_, "", NULL)); |
| + |
| + EXPECT_FALSE(AllowSetCookie(url_google_, |
| + url_google_analytics_, |
| + "", NULL, 0, 0, NULL)); |
| + EXPECT_FALSE(AllowGetCookie(url_google_, |
| + url_google_analytics_, |
| + CookieList(), |
| + NULL, 0, 0)); |
| + EXPECT_FALSE(OnCanGetCookies(*third_party_request_, CookieList())); |
| + EXPECT_FALSE(OnCanSetCookie(*third_party_request_, "", NULL)); |
| +} |
| + |