WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
12106
Changed URL from WebResourceLoadDelegate's webView:resource:willSendRequest:... is ignored
https://bugs.webkit.org/show_bug.cgi?id=12106
Summary
Changed URL from WebResourceLoadDelegate's webView:resource:willSendRequest:....
Dan Wood
Reported
2007-01-03 15:41:29 PST
If you have a WebResourceLoadDelegate that defines webView:resource:willSendRequest:redirectResponse:fromDataSource: to return a new NSURLRequest, that new URL request is ignored, and the original URL is used. I believe that I have traced this to this method. When this is called, newRequest is <NSMutableURLRequest applewebdata://85A64C16-16E4-4262-909B-109A07DB268C/_Media/placeholder_large.jpeg> My delegate code, called downstream from ResourceLoader::willSendRequest, sets clientRequest to <NSURLRequest media:/11D16F2645B64AB190E6/placeholder_large.jpeg> It's not clear to me whether the "if" branch should be taken and there is a bug there, or if there is a bug in the test logic, or if there is a bug in that oldURL is set to nil, messing up the test. NSURLRequest *SubresourceLoader::willSendRequest(NSURLRequest *newRequest, NSURLResponse *redirectResponse) { NSURL *oldURL = [request() URL]; // NOTE: THIS RETURNS NIL -- I DON'T KNOW WHY NSURLRequest *clientRequest = ResourceLoader::willSendRequest(newRequest, redirectResponse); if (clientRequest && oldURL != [clientRequest URL] && ![oldURL isEqual:[clientRequest URL]]) { ResourceRequest request = newRequest; if (m_client) m_client->willSendRequest(this, request, redirectResponse); return request.nsURLRequest(); } return clientRequest; }
Attachments
patch 1
(2.30 KB, patch)
2007-01-04 21:01 PST
,
Graham Dennis
darin
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Graham Dennis
Comment 1
2007-01-04 21:01:00 PST
Created
attachment 12233
[details]
patch 1 Patch 1. Passes layout tests, but no layout test added, as to test this, you need to be able to create a WebResourceLoadDelegate. The problem was that m_request isn't set until the end of ResourceLoader::willSendRequest(), and so oldURL was always empty. But even if we replace oldURL with m_originalURL (which is set at the start of ResourceLoader::load()), the newRequest is only updated if the new and old URLs are the same. This patch fixes both problems so that WebResourceLoadDelegates can now change URLs.
Darin Adler
Comment 2
2007-01-06 18:11:03 PST
Comment on
attachment 12233
[details]
patch 1 Looks good. Maybe we should put a WebResourceLoadDelegate into DumpRenderTree so we can test this. r=me
Alexey Proskuryakov
Comment 3
2007-01-07 03:55:45 PST
Committed by Rob in revision 18646.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug