Commit 2989c371 authored by mef's avatar mef Committed by Commit bot

[Cronet] Use CookieStoreIOS to sync cookies to system store.

BUG=666792
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester

Review-Url: https://codereview.chromium.org/2617853002
Cr-Commit-Position: refs/heads/master@{#441986}
parent 7c03b207
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include "net/log/write_to_file_net_log_observer.h" #include "net/log/write_to_file_net_log_observer.h"
#include "net/proxy/proxy_service.h" #include "net/proxy/proxy_service.h"
#include "net/socket/ssl_client_socket.h" #include "net/socket/ssl_client_socket.h"
#include "net/ssl/channel_id_service.h"
#include "net/url_request/http_user_agent_settings.h" #include "net/url_request/http_user_agent_settings.h"
#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h" #include "net/url_request/url_request_context_builder.h"
...@@ -305,6 +306,11 @@ void CronetEnvironment::InitializeOnNetworkThread() { ...@@ -305,6 +306,11 @@ void CronetEnvironment::InitializeOnNetworkThread() {
context_builder.set_host_resolver(std::move(mapped_host_resolver)); context_builder.set_host_resolver(std::move(mapped_host_resolver));
std::unique_ptr<net::CookieStore> cookie_store(
net::CookieStoreIOS::CreateCookieStore(
[NSHTTPCookieStorage sharedHTTPCookieStorage]));
context_builder.SetCookieAndChannelIdStores(std::move(cookie_store), nullptr);
std::unordered_set<std::string> quic_host_whitelist; std::unordered_set<std::string> quic_host_whitelist;
std::unique_ptr<net::HttpServerProperties> http_server_properties( std::unique_ptr<net::HttpServerProperties> http_server_properties(
new net::HttpServerPropertiesImpl()); new net::HttpServerPropertiesImpl());
......
...@@ -257,24 +257,69 @@ TEST_F(HttpTest, SetUserAgentIsExact) { ...@@ -257,24 +257,69 @@ TEST_F(HttpTest, SetUserAgentIsExact) {
TEST_F(HttpTest, SetCookie) { TEST_F(HttpTest, SetCookie) {
const char kCookieHeader[] = "Cookie"; const char kCookieHeader[] = "Cookie";
const char kCookieLine[] = "aaaa=bbb"; NSString* cookieName =
NSURL* echoCookieUrl = [NSString stringWithFormat:@"SetCookie-%@", [[NSUUID UUID] UUIDString]];
NSString* cookieValue = [[NSUUID UUID] UUIDString];
NSString* cookieLine =
[NSString stringWithFormat:@"%@=%@", cookieName, cookieValue];
NSHTTPCookieStorage* systemCookieStorage =
[NSHTTPCookieStorage sharedHTTPCookieStorage];
NSURL* cookieUrl =
net::NSURLWithGURL(GURL(TestServer::GetEchoHeaderURL(kCookieHeader))); net::NSURLWithGURL(GURL(TestServer::GetEchoHeaderURL(kCookieHeader)));
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:echoCookieUrl]); // Verify that cookie is not set in system storage.
for (NSHTTPCookie* cookie in [systemCookieStorage cookiesForURL:cookieUrl]) {
EXPECT_FALSE([[cookie name] isEqualToString:cookieName]);
}
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:cookieUrl]);
EXPECT_EQ(nil, [delegate_ error]); EXPECT_EQ(nil, [delegate_ error]);
EXPECT_EQ(nil, [delegate_ responseBody]); EXPECT_EQ(nil, [delegate_ responseBody]);
NSURL* setCookieUrl = NSURL* setCookieUrl = net::NSURLWithGURL(
net::NSURLWithGURL(GURL(TestServer::GetSetCookieURL(kCookieLine))); GURL(TestServer::GetSetCookieURL(base::SysNSStringToUTF8(cookieLine))));
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:setCookieUrl]); StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:setCookieUrl]);
EXPECT_EQ(nil, [delegate_ error]); EXPECT_EQ(nil, [delegate_ error]);
EXPECT_TRUE([[delegate_ responseBody] EXPECT_TRUE([[delegate_ responseBody] containsString:cookieLine]);
containsString:base::SysUTF8ToNSString(kCookieLine)]);
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:cookieUrl]);
EXPECT_EQ(nil, [delegate_ error]);
EXPECT_TRUE([[delegate_ responseBody] containsString:cookieLine]);
// Verify that cookie is set in system storage.
NSHTTPCookie* systemCookie = nil;
for (NSHTTPCookie* cookie in [systemCookieStorage cookiesForURL:cookieUrl]) {
if ([cookie.name isEqualToString:cookieName]) {
systemCookie = cookie;
break;
}
}
EXPECT_TRUE([[systemCookie value] isEqualToString:cookieValue]);
[systemCookieStorage deleteCookie:systemCookie];
}
TEST_F(HttpTest, SetSystemCookie) {
const char kCookieHeader[] = "Cookie";
NSString* cookieName = [NSString
stringWithFormat:@"SetSystemCookie-%@", [[NSUUID UUID] UUIDString]];
NSString* cookieValue = [[NSUUID UUID] UUIDString];
NSHTTPCookieStorage* systemCookieStorage =
[NSHTTPCookieStorage sharedHTTPCookieStorage];
NSURL* echoCookieUrl =
net::NSURLWithGURL(GURL(TestServer::GetEchoHeaderURL(kCookieHeader)));
NSHTTPCookie* systemCookie = [NSHTTPCookie cookieWithProperties:@{
NSHTTPCookiePath : [echoCookieUrl path],
NSHTTPCookieName : cookieName,
NSHTTPCookieValue : cookieValue,
NSHTTPCookieDomain : [echoCookieUrl host],
}];
[systemCookieStorage setCookie:systemCookie];
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:echoCookieUrl]); StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:echoCookieUrl]);
[systemCookieStorage deleteCookie:systemCookie];
EXPECT_EQ(nil, [delegate_ error]); EXPECT_EQ(nil, [delegate_ error]);
EXPECT_TRUE([[delegate_ responseBody] // Verify that cookie set in system store was sent to the serever.
containsString:base::SysUTF8ToNSString(kCookieLine)]); EXPECT_TRUE([[delegate_ responseBody] containsString:cookieName]);
EXPECT_TRUE([[delegate_ responseBody] containsString:cookieValue]);
} }
TEST_F(HttpTest, FilterOutRequest) { TEST_F(HttpTest, FilterOutRequest) {
......
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