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 @@
#include "net/log/write_to_file_net_log_observer.h"
#include "net/proxy/proxy_service.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/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
......@@ -305,6 +306,11 @@ void CronetEnvironment::InitializeOnNetworkThread() {
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::unique_ptr<net::HttpServerProperties> http_server_properties(
new net::HttpServerPropertiesImpl());
......
......@@ -257,24 +257,69 @@ TEST_F(HttpTest, SetUserAgentIsExact) {
TEST_F(HttpTest, SetCookie) {
const char kCookieHeader[] = "Cookie";
const char kCookieLine[] = "aaaa=bbb";
NSURL* echoCookieUrl =
NSString* cookieName =
[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)));
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_ responseBody]);
NSURL* setCookieUrl =
net::NSURLWithGURL(GURL(TestServer::GetSetCookieURL(kCookieLine)));
NSURL* setCookieUrl = net::NSURLWithGURL(
GURL(TestServer::GetSetCookieURL(base::SysNSStringToUTF8(cookieLine))));
StartDataTaskAndWaitForCompletion([session_ dataTaskWithURL:setCookieUrl]);
EXPECT_EQ(nil, [delegate_ error]);
EXPECT_TRUE([[delegate_ responseBody]
containsString:base::SysUTF8ToNSString(kCookieLine)]);
EXPECT_TRUE([[delegate_ responseBody] containsString:cookieLine]);
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]);
[systemCookieStorage deleteCookie:systemCookie];
EXPECT_EQ(nil, [delegate_ error]);
EXPECT_TRUE([[delegate_ responseBody]
containsString:base::SysUTF8ToNSString(kCookieLine)]);
// Verify that cookie set in system store was sent to the serever.
EXPECT_TRUE([[delegate_ responseBody] containsString:cookieName]);
EXPECT_TRUE([[delegate_ responseBody] containsString:cookieValue]);
}
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