Diff
Modified: trunk/LayoutTests/ChangeLog (206354 => 206355)
--- trunk/LayoutTests/ChangeLog 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/LayoutTests/ChangeLog 2016-09-25 01:00:02 UTC (rev 206355)
@@ -1,3 +1,14 @@
+2016-09-24 Chris Dumez <[email protected]>
+
+ [WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
+ https://bugs.webkit.org/show_bug.cgi?id=162531
+
+ Reviewed by Darin Adler.
+
+ Unskip tests that are now passing.
+
+ * platform/mac/TestExpectations:
+
2016-09-23 Zalan Bujtas <[email protected]>
ASSERTION FAILED: !newRelayoutRoot.container() || is<RenderView>(newRelayoutRoot.container()) || !newRelayoutRoot.container()->needsLayout() while loading sohu.com
Modified: trunk/LayoutTests/platform/mac/TestExpectations (206354 => 206355)
--- trunk/LayoutTests/platform/mac/TestExpectations 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2016-09-25 01:00:02 UTC (rev 206355)
@@ -1383,8 +1383,6 @@
# <rdar://problem/25536266> [Mac][iOS][NETWORK_SESSION] Unable to download BLOB URLs (156180)
[ Sierra+ ] fast/dom/HTMLAnchorElement/anchor-download.html [ Skip ]
[ Sierra+ ] fast/dom/HTMLAnchorElement/anchor-nodownload-set.html [ Skip ]
-[ Sierra+ ] http/tests/security/anchor-download-allow-data.html [ Skip ]
-[ Sierra+ ] http/tests/security/anchor-download-allow-sameorigin.html [ Skip ]
[ Sierra+ ] http/tests/security/anchor-download-allow-blob.html [ Skip ]
# <rdar://problem/25780035> CSP does not ignore paths for media redirects
Modified: trunk/Source/WebKit2/ChangeLog (206354 => 206355)
--- trunk/Source/WebKit2/ChangeLog 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/ChangeLog 2016-09-25 01:00:02 UTC (rev 206355)
@@ -1,3 +1,28 @@
+2016-09-24 Chris Dumez <[email protected]>
+
+ [WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
+ https://bugs.webkit.org/show_bug.cgi?id=162531
+
+ Reviewed by Darin Adler.
+
+ Pipe the suggested filename through in the NETWORK_SESSION code path so
+ that it is used when deciding the destination path.
+
+ * NetworkProcess/Downloads/DownloadManager.cpp:
+ (WebKit::DownloadManager::startDownload):
+ * NetworkProcess/Downloads/PendingDownload.cpp:
+ (WebKit::PendingDownload::PendingDownload):
+ * NetworkProcess/Downloads/PendingDownload.h:
+ * NetworkProcess/NetworkDataTask.h:
+ * NetworkProcess/NetworkLoad.cpp:
+ (WebKit::NetworkLoad::setSuggestedFilename):
+ * NetworkProcess/NetworkLoad.h:
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTask::suggestedFilename):
+ (WebKit::NetworkDataTask::setSuggestedFilename):
+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+ (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):
+
2016-09-23 Wenson Hsieh <[email protected]>
Media controls playhead does not animate smoothly while playing
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp 2016-09-25 01:00:02 UTC (rev 206355)
@@ -54,7 +54,7 @@
parameters.sessionID = sessionID;
parameters.request = request;
parameters.clientCredentialPolicy = ClientCredentialPolicy::MayAskClientForCredentials;
- m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(parameters), downloadID, *networkSession));
+ m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(parameters), downloadID, *networkSession, suggestedName));
#else
auto download = std::make_unique<Download>(*this, downloadID, request, suggestedName);
download->start();
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp 2016-09-25 01:00:02 UTC (rev 206355)
@@ -38,11 +38,12 @@
namespace WebKit {
-PendingDownload::PendingDownload(NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession)
+PendingDownload::PendingDownload(NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
: m_networkLoad(std::make_unique<NetworkLoad>(*this, WTFMove(parameters), networkSession))
{
m_networkLoad->setPendingDownloadID(downloadID);
m_networkLoad->setPendingDownload(*this);
+ m_networkLoad->setSuggestedFilename(suggestedName);
}
void PendingDownload::willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse)
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h 2016-09-25 01:00:02 UTC (rev 206355)
@@ -45,7 +45,7 @@
class PendingDownload : public NetworkLoadClient, public IPC::MessageSender {
WTF_MAKE_FAST_ALLOCATED;
public:
- PendingDownload(NetworkLoadParameters&&, DownloadID, NetworkSession&);
+ PendingDownload(NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
void continueWillSendRequest(WebCore::ResourceRequest&&);
void continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate);
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h 2016-09-25 01:00:02 UTC (rev 206355)
@@ -127,6 +127,7 @@
const WebCore::ResourceRequest& firstRequest() const { return m_firstRequest; }
WebCore::ResourceRequest currentRequest();
String suggestedFilename();
+ void setSuggestedFilename(const String&);
void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler&&);
void transferSandboxExtensionToDownload(Download&);
bool allowsSpecificHTTPSCertificateForHost(const WebCore::AuthenticationChallenge&);
@@ -164,6 +165,7 @@
#if PLATFORM(COCOA)
RetainPtr<NSURLSessionDataTask> m_task;
#endif
+ String m_suggestedFilename;
};
#if PLATFORM(COCOA)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp 2016-09-25 01:00:02 UTC (rev 206355)
@@ -201,6 +201,14 @@
m_task->setPendingDownloadID(downloadID);
}
+void NetworkLoad::setSuggestedFilename(const String& suggestedName)
+{
+ if (!m_task)
+ return;
+
+ m_task->setSuggestedFilename(suggestedName);
+}
+
void NetworkLoad::setPendingDownload(PendingDownload& pendingDownload)
{
if (!m_task)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h 2016-09-25 01:00:02 UTC (rev 206355)
@@ -66,6 +66,7 @@
#if USE(NETWORK_SESSION)
void convertTaskToDownload(DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
void setPendingDownloadID(DownloadID);
+ void setSuggestedFilename(const String&);
void setPendingDownload(PendingDownload&);
DownloadID pendingDownloadID() { return m_task->pendingDownloadID(); }
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-09-25 01:00:02 UTC (rev 206355)
@@ -371,9 +371,16 @@
String NetworkDataTask::suggestedFilename()
{
+ if (!m_suggestedFilename.isEmpty())
+ return m_suggestedFilename;
return m_task.get().response.suggestedFilename;
}
+void NetworkDataTask::setSuggestedFilename(const String& suggestedName)
+{
+ m_suggestedFilename = suggestedName;
+}
+
WebCore::ResourceRequest NetworkDataTask::currentRequest()
{
return [m_task currentRequest];
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (206354 => 206355)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2016-09-25 01:00:02 UTC (rev 206355)
@@ -297,7 +297,7 @@
if (auto* networkDataTask = _session->dataTaskForIdentifier([dataTask taskIdentifier], storedCredentials)) {
auto downloadID = networkDataTask->pendingDownloadID();
auto& downloadManager = WebKit::NetworkProcess::singleton().downloadManager();
- auto download = std::make_unique<WebKit::Download>(downloadManager, downloadID, downloadTask, _session->sessionID());
+ auto download = std::make_unique<WebKit::Download>(downloadManager, downloadID, downloadTask, _session->sessionID(), networkDataTask->suggestedFilename());
networkDataTask->transferSandboxExtensionToDownload(*download);
ASSERT(WebCore::fileExists(networkDataTask->pendingDownloadLocation()));
download->didCreateDestination(networkDataTask->pendingDownloadLocation());
Modified: trunk/Tools/ChangeLog (206354 => 206355)
--- trunk/Tools/ChangeLog 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Tools/ChangeLog 2016-09-25 01:00:02 UTC (rev 206355)
@@ -1,3 +1,21 @@
+2016-09-24 Chris Dumez <[email protected]>
+
+ [WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
+ https://bugs.webkit.org/show_bug.cgi?id=162531
+
+ Reviewed by Darin Adler.
+
+ Update decideDestinationWithSuggestedFilename() to return a actual file path
+ instead of nullptr. The NETWORK_SESSION code path cancels the download when
+ decideDestinationWithSuggestedFilename() returns an empty file path, unlike
+ the !NETWORK_SESSION code path that just continue downloading without
+ explicitely setting a destination path. This lead to different test results
+ for NETWORK_SESSION and !NETWORK_SESSION code paths. Returns a valid
+ destination path makes more sense and leads to consistent results.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::decideDestinationWithSuggestedFilename):
+
2016-09-23 Wenson Hsieh <[email protected]>
[mac-sierra] 2 WKWebViewCandidateTests API test failures
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (206354 => 206355)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2016-09-25 00:43:38 UTC (rev 206354)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2016-09-25 01:00:02 UTC (rev 206355)
@@ -1673,14 +1673,25 @@
WKStringRef TestController::decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef, WKStringRef filename, bool*& allowOverwrite)
{
+ String suggestedFilename = toWTFString(filename);
+
StringBuilder builder;
builder.append("Downloading URL with suggested filename \"");
- builder.append(toWTFString(filename));
+ builder.append(suggestedFilename);
builder.append("\"\n");
m_currentInvocation->outputText(builder.toString());
- return nullptr;
+ const char* dumpRenderTreeTemp = libraryPathForTesting();
+ if (!dumpRenderTreeTemp)
+ return nullptr;
+
+ *allowOverwrite = true;
+ String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp);
+ if (suggestedFilename.isEmpty())
+ suggestedFilename = "Unknown";
+
+ return toWK(temporaryFolder + "/" + suggestedFilename).leakRef();
}
void TestController::downloadDidFinish(WKContextRef, WKDownloadRef)