browser(webkit): handle set-cookie from intercepted request (Cocoa) (#9304)
This commit is contained in:
parent
0c34ec6e9f
commit
61480e6f1d
|
|
@ -1,2 +1,2 @@
|
||||||
1554
|
1555
|
||||||
Changed: yurys@chromium.org Tue, Oct 5, 2021 1:00:04 AM
|
Changed: yurys@chromium.org Mon Oct 4 22:10:59 PDT 2021
|
||||||
|
|
|
||||||
|
|
@ -9672,7 +9672,7 @@ index b9ab0deebb9f927c73742e86a0be7f97160bd6fb..735d3bdf70f24d96d01aa84b53b4a09b
|
||||||
NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const NetworkLoadParameters&);
|
NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const NetworkLoadParameters&);
|
||||||
|
|
||||||
diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
||||||
index 5c1251af416c36a21a71bc84f18d04c951a6799f..116e28a69e306dc26e0480f4471d15ea1a88ab11 100644
|
index 5c1251af416c36a21a71bc84f18d04c951a6799f..c81bb068fb16ea0c82acef3b382bc371774059d0 100644
|
||||||
--- a/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
--- a/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
||||||
+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
|
||||||
@@ -42,6 +42,7 @@
|
@@ -42,6 +42,7 @@
|
||||||
|
|
@ -9683,7 +9683,7 @@ index 5c1251af416c36a21a71bc84f18d04c951a6799f..116e28a69e306dc26e0480f4471d15ea
|
||||||
#import <wtf/BlockPtr.h>
|
#import <wtf/BlockPtr.h>
|
||||||
#import <wtf/FileSystem.h>
|
#import <wtf/FileSystem.h>
|
||||||
#import <wtf/MainThread.h>
|
#import <wtf/MainThread.h>
|
||||||
@@ -745,4 +746,59 @@ void NetworkDataTaskCocoa::checkTAO(const WebCore::ResourceResponse& response)
|
@@ -745,4 +746,65 @@ void NetworkDataTaskCocoa::checkTAO(const WebCore::ResourceResponse& response)
|
||||||
networkLoadMetrics().failsTAOCheck = !passesTimingAllowOriginCheck(response, *origin);
|
networkLoadMetrics().failsTAOCheck = !passesTimingAllowOriginCheck(response, *origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -9725,10 +9725,16 @@ index 5c1251af416c36a21a71bc84f18d04c951a6799f..116e28a69e306dc26e0480f4471d15ea
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ NSString* cookieString = (NSString *)setCookieValue;
|
+ Vector<String> cookieValues = setCookieValue.split('\n');
|
||||||
+ NSString* cookieKey = @"Set-Cookie";
|
+ size_t count = cookieValues.size();
|
||||||
+ NSDictionary* headers = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObject:cookieString] forKeys:[NSArray arrayWithObject:cookieKey]];
|
+ auto* cookies = [NSMutableArray arrayWithCapacity:count];
|
||||||
+ NSArray<NSHTTPCookie*>* cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:(NSURL *)url];
|
+ for (const auto& cookieValue : cookieValues) {
|
||||||
|
+ NSString* cookieString = (NSString *)cookieValue;
|
||||||
|
+ NSString* cookieKey = @"Set-Cookie";
|
||||||
|
+ NSDictionary* headers = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObject:cookieString] forKeys:[NSArray arrayWithObject:cookieKey]];
|
||||||
|
+ NSArray<NSHTTPCookie*>* parsedCookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers forURL:(NSURL *)url];
|
||||||
|
+ [cookies addObject:parsedCookies[0]];
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ NSURL* siteForCookies = task->m_task.get()._siteForCookies;
|
+ NSURL* siteForCookies = task->m_task.get()._siteForCookies;
|
||||||
+ NSURL* documentURL = task->isTopLevelNavigation() ? siteForCookies : (NSURL *)mainDocumentURL;
|
+ NSURL* documentURL = task->isTopLevelNavigation() ? siteForCookies : (NSURL *)mainDocumentURL;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue