Changeset 87423 in webkit
- Timestamp:
- May 26, 2011 12:53:00 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r87418 r87423 1 2011-05-26 Mihai Parparita <mihaip@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Support cross-origin XMLHttpRequest in isolated worlds 6 https://bugs.webkit.org/show_bug.cgi?id=59843 7 8 Add test for doing a cross-origin XHR in an isolated world via 9 setIsolatedWorldSecurityOrigin and addOriginAccessWhitelistEntry. 10 11 Skipped on JSC ports. 12 13 * http/tests/security/isolatedWorld/cross-origin-xhr-expected.txt: Added. 14 * http/tests/security/isolatedWorld/cross-origin-xhr.html: Added. 15 * http/tests/security/isolatedWorld/resources/cross-origin-xhr.txt: Added. 16 * platform/gtk/Skipped: 17 * platform/mac/Skipped: 18 * platform/qt/Skipped: 19 * platform/win/Skipped: 20 1 21 2011-05-26 Adam Klein <adamk@chromium.org> 2 22 -
trunk/LayoutTests/platform/gtk/Skipped
r87382 r87423 1457 1457 # https://bugs.webkit.org/show_bug.cgi?id=61523 1458 1458 http/tests/eventsource/workers/eventsource-simple.html 1459 1460 # JSC does not support setIsolatedWorldSecurityOrigin (http://webkit.org/b/61540) 1461 http/tests/security/isolatedWorld/cross-origin-xhr.html -
trunk/LayoutTests/platform/mac/Skipped
r87340 r87423 363 363 # https://bugs.webkit.org/show_bug.cgi?id=61487 364 364 http/tests/media/video-cross-site.html 365 366 # JSC does not support setIsolatedWorldSecurityOrigin (http://webkit.org/b/61540) 367 http/tests/security/isolatedWorld/cross-origin-xhr.html -
trunk/LayoutTests/platform/qt/Skipped
r87391 r87423 2515 2515 fast/events/selectstart-by-double-triple-clicks.html 2516 2516 fast/events/selectstart-by-drag.html 2517 2518 # JSC does not support setIsolatedWorldSecurityOrigin (http://webkit.org/b/61540) 2519 http/tests/security/isolatedWorld/cross-origin-xhr.html -
trunk/LayoutTests/platform/win/Skipped
r87274 r87423 1306 1306 # Unskip after implementing LayoutTestController::setDefersLoading and ::goBack. 1307 1307 loader/navigation-while-deferring-loads.html 1308 1309 # JSC does not support setIsolatedWorldSecurityOrigin (http://webkit.org/b/61540) 1310 http/tests/security/isolatedWorld/cross-origin-xhr.html -
trunk/Source/WebCore/ChangeLog
r87419 r87423 1 2011-05-26 Mihai Parparita <mihaip@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Support cross-origin XMLHttpRequest in isolated worlds 6 https://bugs.webkit.org/show_bug.cgi?id=59843 7 8 Allows isolated worlds to be associated with a different SecurityOrigin 9 (exposed as a setIsolatedWorldSecurityOrigin function in 10 ScriptController). 11 12 The XMLHttpRequest constructor can then check that it's being 13 instantiated in an isolated world and use its security origin. 14 XMLHttpRequest, ThreadableLoader and DocumentThreadableLoader had to be 15 changed to use the copied SecurityOrigin instead of always grabbing the 16 Document's. 17 18 Test: http/tests/security/isolatedWorld/cross-origin-xhr.html 19 20 * bindings/v8/ScriptController.cpp: 21 (WebCore::ScriptController::setIsolatedWorldSecurityOrigin): 22 * bindings/v8/ScriptController.h: 23 * bindings/v8/V8IsolatedContext.cpp: 24 (WebCore::V8IsolatedContext::setSecurityOrigin): 25 * bindings/v8/V8IsolatedContext.h: 26 (WebCore::V8IsolatedContext::securityOrigin): 27 * bindings/v8/V8Proxy.cpp: 28 (WebCore::V8Proxy::evaluateInIsolatedWorld): 29 (WebCore::V8Proxy::setIsolatedWorldSecurityOrigin): 30 (WebCore::V8Proxy::resetIsolatedWorlds): 31 * bindings/v8/V8Proxy.h: 32 * bindings/v8/custom/V8XMLHttpRequestConstructor.cpp: 33 (WebCore::V8XMLHttpRequest::constructorCallback): 34 * loader/DocumentThreadableLoader.cpp: 35 (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): 36 (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight): 37 (WebCore::DocumentThreadableLoader::didReceiveResponse): 38 (WebCore::DocumentThreadableLoader::preflightSuccess): 39 (WebCore::DocumentThreadableLoader::isAllowedRedirect): 40 (WebCore::DocumentThreadableLoader::securityOrigin): 41 * loader/DocumentThreadableLoader.h: 42 * loader/ThreadableLoader.h: 43 * xml/XMLHttpRequest.cpp: 44 (WebCore::XMLHttpRequest::create): 45 (WebCore::XMLHttpRequest::XMLHttpRequest): 46 (WebCore::XMLHttpRequest::securityOrigin): 47 (WebCore::XMLHttpRequest::responseXML): 48 (WebCore::XMLHttpRequest::createRequest): 49 (WebCore::XMLHttpRequest::setRequestHeader): 50 (WebCore::XMLHttpRequest::getAllResponseHeaders): 51 (WebCore::XMLHttpRequest::getResponseHeader): 52 * xml/XMLHttpRequest.h: 53 1 54 2011-05-26 Michael Nordman <michaeln@google.com> 2 55 -
trunk/Source/WebCore/bindings/v8/ScriptController.cpp
r86949 r87423 217 217 } 218 218 219 void ScriptController::setIsolatedWorldSecurityOrigin(int worldID, PassRefPtr<SecurityOrigin> securityOrigin) 220 { 221 m_proxy->setIsolatedWorldSecurityOrigin(worldID, securityOrigin); 222 } 223 219 224 // Evaluate a script file in the environment of this proxy. 220 225 ScriptValue ScriptController::evaluate(const ScriptSourceCode& sourceCode) -
trunk/Source/WebCore/bindings/v8/ScriptController.h
r85388 r87423 100 100 void evaluateInIsolatedWorld(unsigned worldID, const Vector<ScriptSourceCode>&, int extensionGroup); 101 101 102 // Associates an isolated world (see above for description) with a security 103 // origin. XMLHttpRequest instances used in that world will be considered 104 // to come from that origin, not the frame's. 105 void setIsolatedWorldSecurityOrigin(int worldId, PassRefPtr<SecurityOrigin>); 106 102 107 // Masquerade 'this' as the windowShell. 103 108 // This is a bit of a hack, but provides reasonable compatibility -
trunk/Source/WebCore/bindings/v8/V8IsolatedContext.cpp
r84371 r87423 35 35 #include "Frame.h" 36 36 #include "FrameLoaderClient.h" 37 #include " HashMap.h"37 #include "SecurityOrigin.h" 38 38 #include "V8DOMWindow.h" 39 39 #include "V8HiddenPropertyName.h" … … 88 88 } 89 89 90 void V8IsolatedContext::setSecurityOrigin(PassRefPtr<SecurityOrigin> securityOrigin) 91 { 92 m_securityOrigin = securityOrigin; 93 } 94 90 95 } // namespace WebCore -
trunk/Source/WebCore/bindings/v8/V8IsolatedContext.h
r56166 r87423 41 41 namespace WebCore { 42 42 43 class SecurityOrigin; 43 44 class V8Proxy; 44 45 … … 59 60 // Creates an isolated world. To destroy it, call destroy(). 60 61 // This will delete the isolated world when the context it owns is GC'd. 61 V8IsolatedContext(V8Proxy* proxy, int extensionGroup);62 V8IsolatedContext(V8Proxy*, int extensionGroup); 62 63 ~V8IsolatedContext(); 63 64 … … 94 95 IsolatedWorld* world() const { return m_world.get(); } 95 96 97 SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); } 98 void setSecurityOrigin(PassRefPtr<SecurityOrigin>); 99 96 100 private: 97 101 static v8::Handle<v8::Object> getGlobalObject(v8::Handle<v8::Context> context) … … 109 113 110 114 RefPtr<IsolatedWorld> m_world; 115 116 RefPtr<SecurityOrigin> m_securityOrigin; 111 117 }; 112 118 -
trunk/Source/WebCore/bindings/v8/V8Proxy.cpp
r86542 r87423 48 48 #include "PlatformBridge.h" 49 49 #include "ScriptSourceCode.h" 50 #include "SecurityOrigin.h" 50 51 #include "Settings.h" 51 52 #include "StorageNamespace.h" … … 273 274 } 274 275 } 276 277 IsolatedWorldSecurityOriginMap::iterator securityOriginIter = m_isolatedWorldSecurityOrigins.find(worldID); 278 if (securityOriginIter != m_isolatedWorldSecurityOrigins.end()) 279 isolatedContext->setSecurityOrigin(securityOriginIter->second); 275 280 } else { 276 281 isolatedContext = new V8IsolatedContext(this, extensionGroup); … … 288 293 if (worldID == 0) 289 294 isolatedContext->destroy(); 295 } 296 297 void V8Proxy::setIsolatedWorldSecurityOrigin(int worldID, PassRefPtr<SecurityOrigin> prpSecurityOriginIn) 298 { 299 ASSERT(worldID); 300 RefPtr<SecurityOrigin> securityOrigin = prpSecurityOriginIn; 301 m_isolatedWorldSecurityOrigins.set(worldID, securityOrigin); 302 IsolatedWorldMap::iterator iter = m_isolatedWorlds.find(worldID); 303 if (iter != m_isolatedWorlds.end()) 304 iter->second->setSecurityOrigin(securityOrigin); 290 305 } 291 306 … … 622 637 } 623 638 m_isolatedWorlds.clear(); 639 m_isolatedWorldSecurityOrigins.clear(); 624 640 } 625 641 -
trunk/Source/WebCore/bindings/v8/V8Proxy.h
r85395 r87423 60 60 class ScriptExecutionContext; 61 61 class ScriptSourceCode; 62 class SecurityOrigin; 62 63 class V8EventListener; 63 64 class V8IsolatedContext; … … 160 161 // constructors. 161 162 void evaluateInIsolatedWorld(int worldId, const Vector<ScriptSourceCode>& sources, int extensionGroup); 163 164 void setIsolatedWorldSecurityOrigin(int worldId, PassRefPtr<SecurityOrigin>); 162 165 163 166 // Returns true if the proxy is currently executing a script in V8. … … 340 343 typedef HashMap<int, V8IsolatedContext*> IsolatedWorldMap; 341 344 IsolatedWorldMap m_isolatedWorlds; 345 346 typedef HashMap<int, RefPtr<SecurityOrigin> > IsolatedWorldSecurityOriginMap; 347 IsolatedWorldSecurityOriginMap m_isolatedWorldSecurityOrigins; 342 348 }; 343 349 -
trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp
r55798 r87423 33 33 34 34 #include "Frame.h" 35 #include "OriginAccessEntry.h" 36 #include "SecurityOrigin.h" 35 37 #include "V8Binding.h" 38 #include "V8IsolatedContext.h" 36 39 #include "V8Proxy.h" 37 40 #include "V8Utilities.h" … … 53 56 if (!context) 54 57 return throwError("XMLHttpRequest constructor's associated context is not available", V8Proxy::ReferenceError); 55 RefPtr<XMLHttpRequest> xmlHttpRequest = XMLHttpRequest::create(context); 58 59 RefPtr<SecurityOrigin> securityOrigin; 60 if (V8IsolatedContext* isolatedContext = V8IsolatedContext::getEntered()) 61 securityOrigin = isolatedContext->securityOrigin(); 62 RefPtr<XMLHttpRequest> xmlHttpRequest = XMLHttpRequest::create(context, securityOrigin); 56 63 V8DOMWrapper::setDOMWrapper(args.Holder(), &info, xmlHttpRequest.get()); 57 64 -
trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp
r86980 r87423 69 69 , m_options(options) 70 70 , m_optionalOutgoingReferrer(optionalOutgoingReferrer) 71 , m_sameOriginRequest( document->securityOrigin()->canRequest(request.url()))71 , m_sameOriginRequest(securityOrigin()->canRequest(request.url())) 72 72 , m_async(blockingBehavior == LoadAsynchronously) 73 73 { … … 90 90 91 91 OwnPtr<ResourceRequest> crossOriginRequest = adoptPtr(new ResourceRequest(request)); 92 updateRequestForAccessControl(*crossOriginRequest, m_document->securityOrigin(), m_options.allowCredentials);92 updateRequestForAccessControl(*crossOriginRequest, securityOrigin(), m_options.allowCredentials); 93 93 94 94 if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(crossOriginRequest->httpMethod(), crossOriginRequest->httpHeaderFields())) … … 97 97 m_actualRequest = crossOriginRequest.release(); 98 98 99 if (CrossOriginPreflightResultCache::shared().canSkipPreflight( document->securityOrigin()->toString(), m_actualRequest->url(), m_options.allowCredentials, m_actualRequest->httpMethod(), m_actualRequest->httpHeaderFields()))99 if (CrossOriginPreflightResultCache::shared().canSkipPreflight(securityOrigin()->toString(), m_actualRequest->url(), m_options.allowCredentials, m_actualRequest->httpMethod(), m_actualRequest->httpHeaderFields())) 100 100 preflightSuccess(); 101 101 else … … 120 120 void DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request) 121 121 { 122 ResourceRequest preflightRequest = createAccessControlPreflightRequest(request, m_document->securityOrigin(), m_options.allowCredentials);122 ResourceRequest preflightRequest = createAccessControlPreflightRequest(request, securityOrigin(), m_options.allowCredentials); 123 123 loadRequest(preflightRequest, DoSecurityCheck); 124 124 } … … 177 177 String accessControlErrorDescription; 178 178 if (m_actualRequest) { 179 if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin(), accessControlErrorDescription)) {179 if (!passesAccessControlCheck(response, m_options.allowCredentials, securityOrigin(), accessControlErrorDescription)) { 180 180 preflightFailure(response.url(), accessControlErrorDescription); 181 181 return; … … 190 190 } 191 191 192 CrossOriginPreflightResultCache::shared().appendEntry( m_document->securityOrigin()->toString(), m_actualRequest->url(), preflightResult.release());192 CrossOriginPreflightResultCache::shared().appendEntry(securityOrigin()->toString(), m_actualRequest->url(), preflightResult.release()); 193 193 } else { 194 194 if (!m_sameOriginRequest && m_options.crossOriginRequestPolicy == UseAccessControl) { 195 if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin(), accessControlErrorDescription)) {195 if (!passesAccessControlCheck(response, m_options.allowCredentials, securityOrigin(), accessControlErrorDescription)) { 196 196 m_client->didFail(ResourceError(errorDomainWebKitInternal, 0, response.url().string(), accessControlErrorDescription)); 197 197 return; … … 294 294 actualRequest.swap(m_actualRequest); 295 295 296 actualRequest->setHTTPOrigin( m_document->securityOrigin()->toString());296 actualRequest->setHTTPOrigin(securityOrigin()->toString()); 297 297 298 298 // It should be ok to skip the security check since we already asked about the preflight request. … … 369 369 // that processes redirects doesn't know about access control and expects a synchronous answer from its client about whether 370 370 // a redirect should proceed. 371 return m_sameOriginRequest && m_document->securityOrigin()->canRequest(url); 371 return m_sameOriginRequest && securityOrigin()->canRequest(url); 372 } 373 374 SecurityOrigin* DocumentThreadableLoader::securityOrigin() const 375 { 376 return m_options.securityOrigin ? m_options.securityOrigin.get() : m_document->securityOrigin(); 372 377 } 373 378 -
trunk/Source/WebCore/loader/DocumentThreadableLoader.h
r84260 r87423 46 46 class KURL; 47 47 class ResourceRequest; 48 class SecurityOrigin; 48 49 class ThreadableLoaderClient; 49 50 … … 95 96 bool isAllowedRedirect(const KURL&); 96 97 98 SecurityOrigin* securityOrigin() const; 99 97 100 RefPtr<SubresourceLoader> m_loader; 98 101 ThreadableLoaderClient* m_client; -
trunk/Source/WebCore/loader/ThreadableLoader.h
r86290 r87423 32 32 #define ThreadableLoader_h 33 33 34 #include "SecurityOrigin.h" 34 35 #include <wtf/Noncopyable.h> 35 36 #include <wtf/PassRefPtr.h> 37 #include <wtf/RefPtr.h> 36 38 #include <wtf/Vector.h> 37 39 … … 63 65 CrossOriginRequestPolicy crossOriginRequestPolicy; 64 66 bool shouldBufferData; 67 RefPtr<SecurityOrigin> securityOrigin; 65 68 }; 66 69 -
trunk/Source/WebCore/xml/XMLHttpRequest.cpp
r86251 r87423 173 173 } 174 174 175 XMLHttpRequest::XMLHttpRequest(ScriptExecutionContext* context) 175 PassRefPtr<XMLHttpRequest> XMLHttpRequest::create(ScriptExecutionContext* context, PassRefPtr<SecurityOrigin> securityOrigin) 176 { 177 return adoptRef(new XMLHttpRequest(context, securityOrigin)); 178 } 179 180 XMLHttpRequest::XMLHttpRequest(ScriptExecutionContext* context, PassRefPtr<SecurityOrigin> securityOrigin) 176 181 : ActiveDOMObject(context, this) 177 182 , m_async(true) … … 188 193 , m_progressEventThrottle(this) 189 194 , m_responseTypeCode(ResponseTypeDefault) 195 , m_securityOrigin(securityOrigin) 190 196 { 191 197 initializeXMLHttpRequestStaticData(); … … 206 212 ASSERT(scriptExecutionContext()->isDocument()); 207 213 return static_cast<Document*>(scriptExecutionContext()); 214 } 215 216 SecurityOrigin* XMLHttpRequest::securityOrigin() const 217 { 218 return m_securityOrigin ? m_securityOrigin.get() : scriptExecutionContext()->securityOrigin(); 208 219 } 209 220 … … 250 261 // FIXME: Set Last-Modified. 251 262 m_responseXML->setContent(m_responseBuilder.toStringPreserveCapacity()); 252 m_responseXML->setSecurityOrigin( document()->securityOrigin());263 m_responseXML->setSecurityOrigin(securityOrigin()); 253 264 if (!m_responseXML->wellFormed()) 254 265 m_responseXML = 0; … … 618 629 } 619 630 620 m_sameOriginRequest = s criptExecutionContext()->securityOrigin()->canRequest(m_url);631 m_sameOriginRequest = securityOrigin()->canRequest(m_url); 621 632 622 633 // We also remember whether upload events should be allowed for this request in case the upload listeners are … … 642 653 options.allowCredentials = m_sameOriginRequest || m_includeCredentials; 643 654 options.crossOriginRequestPolicy = UseAccessControl; 655 options.securityOrigin = securityOrigin(); 644 656 645 657 m_exceptionCode = 0; … … 824 836 825 837 // A privileged script (e.g. a Dashboard widget) can set any headers. 826 if (!s criptExecutionContext()->securityOrigin()->canLoadLocalResources() && !isSafeRequestHeader(name)) {838 if (!securityOrigin()->canLoadLocalResources() && !isSafeRequestHeader(name)) { 827 839 reportUnsafeUsage(scriptExecutionContext(), "Refused to set unsafe header \"" + name + "\""); 828 840 return; … … 867 879 // know any widely used technique that requires access to them. 868 880 // 3) Firefox has implemented this policy. 869 if (isSetCookieHeader(it->first) && !s criptExecutionContext()->securityOrigin()->canLoadLocalResources())881 if (isSetCookieHeader(it->first) && !securityOrigin()->canLoadLocalResources()) 870 882 continue; 871 883 … … 892 904 893 905 // See comment in getAllResponseHeaders above. 894 if (isSetCookieHeader(name) && !s criptExecutionContext()->securityOrigin()->canLoadLocalResources()) {906 if (isSetCookieHeader(name) && !securityOrigin()->canLoadLocalResources()) { 895 907 reportUnsafeUsage(scriptExecutionContext(), "Refused to get unsafe header \"" + name + "\""); 896 908 return String(); -
trunk/Source/WebCore/xml/XMLHttpRequest.h
r84764 r87423 40 40 class DOMFormData; 41 41 class ResourceRequest; 42 class SecurityOrigin; 42 43 class SharedBuffer; 43 44 class TextResourceDecoder; … … 47 48 WTF_MAKE_FAST_ALLOCATED; 48 49 public: 49 static PassRefPtr<XMLHttpRequest> create(ScriptExecutionContext* context) { return adoptRef(new XMLHttpRequest(context)); }50 static PassRefPtr<XMLHttpRequest> create(ScriptExecutionContext*, PassRefPtr<SecurityOrigin> = 0); 50 51 ~XMLHttpRequest(); 51 52 … … 135 136 136 137 private: 137 XMLHttpRequest(ScriptExecutionContext* );138 XMLHttpRequest(ScriptExecutionContext*, PassRefPtr<SecurityOrigin>); 138 139 139 140 virtual void refEventTarget() { ref(); } … … 143 144 144 145 Document* document() const; 146 SecurityOrigin* securityOrigin() const; 145 147 146 148 #if ENABLE(DASHBOARD_SUPPORT) … … 227 229 // An enum corresponding to the allowed string values for the responseType attribute. 228 230 ResponseTypeCode m_responseTypeCode; 231 232 RefPtr<SecurityOrigin> m_securityOrigin; 229 233 }; 230 234 -
trunk/Source/WebKit/chromium/ChangeLog
r87419 r87423 1 2011-05-26 Mihai Parparita <mihaip@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Support cross-origin XMLHttpRequest in isolated worlds 6 https://bugs.webkit.org/show_bug.cgi?id=59843 7 8 Expose setIsolatedWorldSecurityOrigin in the WebFrame API. 9 10 * public/WebFrame.h: 11 * src/WebFrameImpl.cpp: 12 (WebKit::WebFrameImpl::setIsolatedWorldSecurityOrigin): 13 * src/WebFrameImpl.h: 14 1 15 2011-05-26 Michael Nordman <michaeln@google.com> 2 16 -
trunk/Source/WebKit/chromium/public/WebFrame.h
r86721 r87423 254 254 int extensionGroup) = 0; 255 255 256 // Associates an isolated world (see above for description) with a security 257 // origin. XMLHttpRequest instances used in that world will be considered 258 // to come from that origin, not the frame's. 259 virtual void setIsolatedWorldSecurityOrigin( 260 int worldId, const WebSecurityOrigin&) = 0; 261 256 262 // Logs to the console associated with this frame. 257 263 virtual void addMessageToConsole(const WebConsoleMessage&) = 0; -
trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp
r87260 r87423 790 790 } 791 791 792 void WebFrameImpl::setIsolatedWorldSecurityOrigin(int worldId, const WebSecurityOrigin& securityOrigin) 793 { 794 m_frame->script()->setIsolatedWorldSecurityOrigin(worldId, securityOrigin.get()); 795 } 796 792 797 void WebFrameImpl::addMessageToConsole(const WebConsoleMessage& message) 793 798 { -
trunk/Source/WebKit/chromium/src/WebFrameImpl.h
r86721 r87423 105 105 int worldId, const WebScriptSource* sources, unsigned numSources, 106 106 int extensionGroup); 107 virtual void setIsolatedWorldSecurityOrigin(int worldId, const WebSecurityOrigin&); 107 108 virtual void addMessageToConsole(const WebConsoleMessage&); 108 109 virtual void collectGarbage(); -
trunk/Tools/ChangeLog
r87421 r87423 1 2011-05-26 Mihai Parparita <mihaip@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Support cross-origin XMLHttpRequest in isolated worlds 6 https://bugs.webkit.org/show_bug.cgi?id=59843 7 8 Expose setIsolatedWorldSecurityOrigin in LayoutTestController. 9 10 * DumpRenderTree/chromium/LayoutTestController.cpp: 11 (LayoutTestController::LayoutTestController): 12 (LayoutTestController::setIsolatedWorldSecurityOrigin): 13 * DumpRenderTree/chromium/LayoutTestController.h: 14 1 15 2011-05-25 Brian Weinstein <bweinstein@apple.com> 2 16 -
trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp
r87313 r87423 109 109 bindMethod("evaluateInWebInspector", &LayoutTestController::evaluateInWebInspector); 110 110 bindMethod("evaluateScriptInIsolatedWorld", &LayoutTestController::evaluateScriptInIsolatedWorld); 111 bindMethod("setIsolatedWorldSecurityOrigin", &LayoutTestController::setIsolatedWorldSecurityOrigin); 111 112 bindMethod("execCommand", &LayoutTestController::execCommand); 112 113 bindMethod("grantDesktopNotificationPermission", &LayoutTestController::grantDesktopNotificationPermission); … … 1288 1289 } 1289 1290 1291 void LayoutTestController::setIsolatedWorldSecurityOrigin(const CppArgumentList& arguments, CppVariant* result) 1292 { 1293 result->setNull(); 1294 1295 if (arguments.size() != 2 || !arguments[0].isNumber() || !arguments[1].isString()) 1296 return; 1297 1298 m_shell->webView()->focusedFrame()->setIsolatedWorldSecurityOrigin( 1299 arguments[0].toInt32(), 1300 WebSecurityOrigin::createFromString(cppVariantToWebString(arguments[1]))); 1301 } 1302 1290 1303 void LayoutTestController::setAllowUniversalAccessFromFileURLs(const CppArgumentList& arguments, CppVariant* result) 1291 1304 { -
trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h
r87313 r87423 267 267 void setJavaScriptCanAccessClipboard(const CppArgumentList&, CppVariant*); 268 268 void setXSSAuditorEnabled(const CppArgumentList&, CppVariant*); 269 void evaluateScriptInIsolatedWorld(const CppArgumentList&, CppVariant*);270 269 void overridePreference(const CppArgumentList&, CppVariant*); 271 270 void setAllowUniversalAccessFromFileURLs(const CppArgumentList&, CppVariant*); … … 273 272 void setAllowFileAccessFromFileURLs(const CppArgumentList&, CppVariant*); 274 273 void setAllowRunningOfInsecureContent(const CppArgumentList&, CppVariant*); 274 275 void evaluateScriptInIsolatedWorld(const CppArgumentList&, CppVariant*); 276 void setIsolatedWorldSecurityOrigin(const CppArgumentList&, CppVariant*); 275 277 276 278 void shadowRoot(const CppArgumentList&, CppVariant*);
Note: See TracChangeset
for help on using the changeset viewer.