Diff
Modified: trunk/LayoutTests/ChangeLog (98707 => 98708)
--- trunk/LayoutTests/ChangeLog 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/LayoutTests/ChangeLog 2011-10-28 08:16:59 UTC (rev 98708)
@@ -1,3 +1,14 @@
+2011-10-28 Jochen Eisinger <[email protected]>
+
+ Add allowScriptFromSource callback to FrameLoaderClient
+ https://bugs.webkit.org/show_bug.cgi?id=71013
+
+ Reviewed by Darin Fisher.
+
+ * platform/chromium/permissionclient/resources/script.js: Added.
+ * platform/chromium/permissionclient/script-permissions-expected.txt: Added.
+ * platform/chromium/permissionclient/script-permissions.html: Added.
+
2011-10-28 Yuta Kitamura <[email protected]>
Unreviewed, update Chromium test expectation.
Added: trunk/LayoutTests/platform/chromium/permissionclient/resources/script.js (0 => 98708)
--- trunk/LayoutTests/platform/chromium/permissionclient/resources/script.js (rev 0)
+++ trunk/LayoutTests/platform/chromium/permissionclient/resources/script.js 2011-10-28 08:16:59 UTC (rev 98708)
@@ -0,0 +1 @@
+log('FAIL: script loaded');
Added: trunk/LayoutTests/platform/chromium/permissionclient/script-permissions-expected.txt (0 => 98708)
--- trunk/LayoutTests/platform/chromium/permissionclient/script-permissions-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/chromium/permissionclient/script-permissions-expected.txt 2011-10-28 08:16:59 UTC (rev 98708)
@@ -0,0 +1,2 @@
+PERMISSION CLIENT: allowScriptFromSource((file test):platform/chromium/permissionclient/resources/script.js): false
+
Added: trunk/LayoutTests/platform/chromium/permissionclient/script-permissions.html (0 => 98708)
--- trunk/LayoutTests/platform/chromium/permissionclient/script-permissions.html (rev 0)
+++ trunk/LayoutTests/platform/chromium/permissionclient/script-permissions.html 2011-10-28 08:16:59 UTC (rev 98708)
@@ -0,0 +1,32 @@
+<html>
+<head>
+<script>
+if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.dumpPermissionClientCallbacks();
+}
+
+function log(a)
+{
+ document.getElementById("log").innerHTML += a + "<br>";
+}
+
+function test()
+{
+ if (window.layoutTestController && layoutTestController.setScriptsAllowed)
+ layoutTestController.setScriptsAllowed(false);
+ else
+ log("This test requires layoutTestController.setScriptsAllowed, so it be can't run in a browser.");
+
+ // Try to load an external script.
+ var script = document.createElement('script');
+ script.src = ""
+ document.getElementById("script").appendChild(script);
+}
+</script>
+</head>
+<body _onload_="test()">
+<div id="script"></div>
+<div id="log"></div>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (98707 => 98708)
--- trunk/Source/WebCore/ChangeLog 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebCore/ChangeLog 2011-10-28 08:16:59 UTC (rev 98708)
@@ -1,3 +1,17 @@
+2011-10-28 Jochen Eisinger <[email protected]>
+
+ Add allowScriptFromSource callback to FrameLoaderClient
+ https://bugs.webkit.org/show_bug.cgi?id=71013
+
+ Reviewed by Darin Fisher.
+
+ Test: platform/chromium/permissionclient/script-permissions.html
+
+ * loader/FrameLoaderClient.h:
+ (WebCore::FrameLoaderClient::allowScriptFromSource):
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::CachedResourceLoader::canRequest):
+
2011-10-27 Adam Barth <[email protected]>
Refactor make_event_factory.pl to use InFilesCompiler.pm
Modified: trunk/Source/WebCore/loader/FrameLoaderClient.h (98707 => 98708)
--- trunk/Source/WebCore/loader/FrameLoaderClient.h 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebCore/loader/FrameLoaderClient.h 2011-10-28 08:16:59 UTC (rev 98708)
@@ -300,6 +300,7 @@
virtual void didChangeScrollOffset() { }
virtual bool allowJavaScript(bool enabledPerSettings) { return enabledPerSettings; }
+ virtual bool allowScriptFromSource(bool enabledPerSettings, const KURL&) { return enabledPerSettings; }
virtual bool allowPlugins(bool enabledPerSettings) { return enabledPerSettings; }
virtual bool allowImage(bool enabledPerSettings, const KURL&) { return enabledPerSettings; }
virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, SecurityOrigin*, const KURL&) { return enabledPerSettings; }
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (98707 => 98708)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2011-10-28 08:16:59 UTC (rev 98708)
@@ -317,6 +317,14 @@
case CachedResource::Script:
if (!m_document->contentSecurityPolicy()->allowScriptFromSource(url))
return false;
+
+ if (frame()) {
+ Settings* settings = frame()->settings();
+ if (!frame()->loader()->client()->allowScriptFromSource(!settings || settings->isJavaScriptEnabled(), url)) {
+ frame()->loader()->client()->didNotAllowScript();
+ return false;
+ }
+ }
break;
case CachedResource::CSSStyleSheet:
if (!m_document->contentSecurityPolicy()->allowStyleFromSource(url))
Modified: trunk/Source/WebKit/chromium/ChangeLog (98707 => 98708)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-10-28 08:16:59 UTC (rev 98708)
@@ -1,3 +1,16 @@
+2011-10-28 Jochen Eisinger <[email protected]>
+
+ Add allowScriptFromSource callback to FrameLoaderClient
+ https://bugs.webkit.org/show_bug.cgi?id=71013
+
+ Reviewed by Darin Fisher.
+
+ * public/WebPermissionClient.h:
+ (WebKit::WebPermissionClient::allowScriptFromSource):
+ * src/FrameLoaderClientImpl.cpp:
+ (WebKit::FrameLoaderClientImpl::allowScriptFromSource):
+ * src/FrameLoaderClientImpl.h:
+
2011-10-26 Nat Duca <[email protected]>
[chromium] Implement frame rate control portions of CCScheduler
Modified: trunk/Source/WebKit/chromium/public/WebPermissionClient.h (98707 => 98708)
--- trunk/Source/WebKit/chromium/public/WebPermissionClient.h 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebKit/chromium/public/WebPermissionClient.h 2011-10-28 08:16:59 UTC (rev 98708)
@@ -58,6 +58,9 @@
// Controls whether scripts are allowed to execute for this frame.
virtual bool allowScript(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; }
+ // Controls whether scripts loaded from the given URL are allowed to execute for this frame.
+ virtual bool allowScriptFromSource(WebFrame*, bool enabledPerSettings, const WebURL& scriptURL) { return enabledPerSettings; }
+
// Controls whether insecrure content is allowed to display for this frame.
virtual bool allowDisplayingInsecureContent(WebFrame*, bool enabledPerSettings, const WebSecurityOrigin&, const WebURL&) { return enabledPerSettings; }
Modified: trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp (98707 => 98708)
--- trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp 2011-10-28 08:16:59 UTC (rev 98708)
@@ -187,6 +187,15 @@
return enabledPerSettings;
}
+bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, const KURL& scriptURL)
+{
+ WebViewImpl* webview = m_webFrame->viewImpl();
+ if (webview && webview->permissionClient())
+ return webview->permissionClient()->allowScriptFromSource(m_webFrame, enabledPerSettings, scriptURL);
+
+ return enabledPerSettings;
+}
+
bool FrameLoaderClientImpl::allowPlugins(bool enabledPerSettings)
{
WebViewImpl* webview = m_webFrame->viewImpl();
Modified: trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.h (98707 => 98708)
--- trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.h 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.h 2011-10-28 08:16:59 UTC (rev 98708)
@@ -197,6 +197,7 @@
virtual void registerForIconNotification(bool listen = true);
virtual void didChangeScrollOffset();
virtual bool allowJavaScript(bool enabledPerSettings);
+ virtual bool allowScriptFromSource(bool enabledPerSettings, const WebCore::KURL& scriptURL);
virtual bool allowPlugins(bool enabledPerSettings);
virtual bool allowImage(bool enabledPerSettings, const WebCore::KURL& imageURL);
virtual bool allowDisplayingInsecureContent(bool enabledPerSettings, WebCore::SecurityOrigin*, const WebCore::KURL&);
Modified: trunk/Tools/ChangeLog (98707 => 98708)
--- trunk/Tools/ChangeLog 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Tools/ChangeLog 2011-10-28 08:16:59 UTC (rev 98708)
@@ -1,3 +1,20 @@
+2011-10-28 Jochen Eisinger <[email protected]>
+
+ Add allowScriptFromSource callback to FrameLoaderClient
+ https://bugs.webkit.org/show_bug.cgi?id=71013
+
+ Reviewed by Darin Fisher.
+
+ * DumpRenderTree/chromium/LayoutTestController.cpp:
+ (LayoutTestController::LayoutTestController):
+ (LayoutTestController::setScriptsAllowed):
+ * DumpRenderTree/chromium/LayoutTestController.h:
+ * DumpRenderTree/chromium/WebPermissions.cpp:
+ (WebPermissions::allowScriptFromSource):
+ (WebPermissions::setScriptsAllowed):
+ (WebPermissions::reset):
+ * DumpRenderTree/chromium/WebPermissions.h:
+
2011-10-28 Alexandru Chiculita <[email protected]>
Added myself as a committer.
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp (98707 => 98708)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2011-10-28 08:16:59 UTC (rev 98708)
@@ -200,6 +200,7 @@
bindMethod("windowCount", &LayoutTestController::windowCount);
bindMethod("setTextDirection", &LayoutTestController::setTextDirection);
bindMethod("setImagesAllowed", &LayoutTestController::setImagesAllowed);
+ bindMethod("setScriptsAllowed", &LayoutTestController::setScriptsAllowed);
bindMethod("setStorageAllowed", &LayoutTestController::setStorageAllowed);
bindMethod("setPluginsAllowed", &LayoutTestController::setPluginsAllowed);
@@ -800,6 +801,13 @@
result->setNull();
}
+void LayoutTestController::setScriptsAllowed(const CppArgumentList& arguments, CppVariant* result)
+{
+ if (arguments.size() > 0 && arguments[0].isBool())
+ m_shell->webPermissions()->setScriptsAllowed(arguments[0].toBoolean());
+ result->setNull();
+}
+
void LayoutTestController::setStorageAllowed(const CppArgumentList& arguments, CppVariant* result)
{
if (arguments.size() > 0 && arguments[0].isBool())
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h (98707 => 98708)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2011-10-28 08:16:59 UTC (rev 98708)
@@ -395,6 +395,7 @@
// WebPermissionClient related.
void setImagesAllowed(const CppArgumentList&, CppVariant*);
+ void setScriptsAllowed(const CppArgumentList&, CppVariant*);
void setStorageAllowed(const CppArgumentList&, CppVariant*);
void setPluginsAllowed(const CppArgumentList&, CppVariant*);
void dumpPermissionClientCallbacks(const CppArgumentList&, CppVariant*);
Modified: trunk/Tools/DumpRenderTree/chromium/WebPermissions.cpp (98707 => 98708)
--- trunk/Tools/DumpRenderTree/chromium/WebPermissions.cpp 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Tools/DumpRenderTree/chromium/WebPermissions.cpp 2011-10-28 08:16:59 UTC (rev 98708)
@@ -54,6 +54,14 @@
return allowed;
}
+bool WebPermissions::allowScriptFromSource(WebKit::WebFrame*, bool enabledPerSettings, const WebKit::WebURL& scriptURL)
+{
+ bool allowed = enabledPerSettings && m_scriptsAllowed;
+ if (layoutTestController()->shouldDumpPermissionClientCallbacks())
+ fprintf(stdout, "PERMISSION CLIENT: allowScriptFromSource(%s): %s\n", m_shell->normalizeLayoutTestURL(scriptURL.spec()).c_str(), allowed ? "true" : "false");
+ return allowed;
+}
+
bool WebPermissions::allowStorage(WebKit::WebFrame*, bool)
{
return m_storageAllowed;
@@ -81,6 +89,11 @@
m_imagesAllowed = imagesAllowed;
}
+void WebPermissions::setScriptsAllowed(bool scriptsAllowed)
+{
+ m_scriptsAllowed = scriptsAllowed;
+}
+
void WebPermissions::setStorageAllowed(bool storageAllowed)
{
m_storageAllowed = storageAllowed;
@@ -104,6 +117,7 @@
void WebPermissions::reset()
{
m_imagesAllowed = true;
+ m_scriptsAllowed = true;
m_storageAllowed = true;
m_pluginsAllowed = true;
m_displayingInsecureContentAllowed = false;
Modified: trunk/Tools/DumpRenderTree/chromium/WebPermissions.h (98707 => 98708)
--- trunk/Tools/DumpRenderTree/chromium/WebPermissions.h 2011-10-28 08:12:53 UTC (rev 98707)
+++ trunk/Tools/DumpRenderTree/chromium/WebPermissions.h 2011-10-28 08:16:59 UTC (rev 98708)
@@ -43,6 +43,7 @@
// Override WebPermissionClient methods.
virtual bool allowImage(WebKit::WebFrame*, bool enabledPerSettings, const WebKit::WebURL& imageURL);
+ virtual bool allowScriptFromSource(WebKit::WebFrame*, bool enabledPerSettings, const WebKit::WebURL& scriptURL);
virtual bool allowStorage(WebKit::WebFrame*, bool local);
virtual bool allowPlugins(WebKit::WebFrame*, bool enabledPerSettings);
virtual bool allowDisplayingInsecureContent(WebKit::WebFrame*, bool enabledPerSettings,
@@ -52,12 +53,13 @@
// Hooks to set the different policies.
void setImagesAllowed(bool);
+ void setScriptsAllowed(bool);
void setStorageAllowed(bool);
void setPluginsAllowed(bool);
void setDisplayingInsecureContentAllowed(bool);
void setRunningInsecureContentAllowed(bool);
- // Resets the policy to allow images, storage, displaying insecure, but not running insecure.
+ // Resets the policy to allow everything, except for running insecure content.
void reset();
private:
@@ -67,6 +69,7 @@
TestShell* m_shell;
bool m_imagesAllowed;
+ bool m_scriptsAllowed;
bool m_storageAllowed;
bool m_pluginsAllowed;
bool m_displayingInsecureContentAllowed;