Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp

Issue 1390943003: Bypass ServiceWorker when the request originates from isolated world. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check isIsolatedWorld and set skipServiceWorker. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org> 3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org>
4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org> 4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org>
5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved. 5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved.
6 * Copyright (C) 2012 Intel Corporation 6 * Copyright (C) 2012 Intel Corporation
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 } 184 }
185 185
186 Member<XMLHttpRequest> m_xhr; 186 Member<XMLHttpRequest> m_xhr;
187 FileReaderLoader m_loader; 187 FileReaderLoader m_loader;
188 }; 188 };
189 189
190 XMLHttpRequest* XMLHttpRequest::create(ScriptState* scriptState) 190 XMLHttpRequest* XMLHttpRequest::create(ScriptState* scriptState)
191 { 191 {
192 ExecutionContext* context = scriptState->executionContext(); 192 ExecutionContext* context = scriptState->executionContext();
193 DOMWrapperWorld& world = scriptState->world(); 193 DOMWrapperWorld& world = scriptState->world();
194 RefPtr<SecurityOrigin> securityOrigin = world.isIsolatedWorld() ? world.isol atedWorldSecurityOrigin() : nullptr; 194 RefPtr<SecurityOrigin> isolatedWorldSecurityOrigin = world.isIsolatedWorld() ? world.isolatedWorldSecurityOrigin() : nullptr;
195 XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, securityOrigin) ; 195 XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, isolatedWorldSe curityOrigin);
196 xmlHttpRequest->suspendIfNeeded(); 196 xmlHttpRequest->suspendIfNeeded();
197 197
198 return xmlHttpRequest; 198 return xmlHttpRequest;
199 } 199 }
200 200
201 XMLHttpRequest* XMLHttpRequest::create(ExecutionContext* context) 201 XMLHttpRequest* XMLHttpRequest::create(ExecutionContext* context)
202 { 202 {
203 XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, nullptr); 203 XMLHttpRequest* xmlHttpRequest = new XMLHttpRequest(context, nullptr);
204 xmlHttpRequest->suspendIfNeeded(); 204 xmlHttpRequest->suspendIfNeeded();
205 205
206 return xmlHttpRequest; 206 return xmlHttpRequest;
207 } 207 }
208 208
209 XMLHttpRequest::XMLHttpRequest(ExecutionContext* context, PassRefPtr<SecurityOri gin> securityOrigin) 209 XMLHttpRequest::XMLHttpRequest(ExecutionContext* context, PassRefPtr<SecurityOri gin> isolatedWorldSecurityOrigin)
210 : ActiveDOMObject(context) 210 : ActiveDOMObject(context)
211 , m_timeoutMilliseconds(0) 211 , m_timeoutMilliseconds(0)
212 , m_state(UNSENT) 212 , m_state(UNSENT)
213 , m_lengthDownloadedToFile(0) 213 , m_lengthDownloadedToFile(0)
214 , m_receivedLength(0) 214 , m_receivedLength(0)
215 , m_exceptionCode(0) 215 , m_exceptionCode(0)
216 , m_progressEventThrottle(XMLHttpRequestProgressEventThrottle::create(this)) 216 , m_progressEventThrottle(XMLHttpRequestProgressEventThrottle::create(this))
217 , m_responseTypeCode(ResponseTypeDefault) 217 , m_responseTypeCode(ResponseTypeDefault)
218 , m_securityOrigin(securityOrigin) 218 , m_isolatedWorldSecurityOrigin(isolatedWorldSecurityOrigin)
219 , m_eventDispatchRecursionLevel(0) 219 , m_eventDispatchRecursionLevel(0)
220 , m_async(true) 220 , m_async(true)
221 , m_includeCredentials(false) 221 , m_includeCredentials(false)
222 , m_parsedResponse(false) 222 , m_parsedResponse(false)
223 , m_error(false) 223 , m_error(false)
224 , m_uploadEventsAllowed(true) 224 , m_uploadEventsAllowed(true)
225 , m_uploadComplete(false) 225 , m_uploadComplete(false)
226 , m_sameOriginRequest(true) 226 , m_sameOriginRequest(true)
227 , m_downloadingToFile(false) 227 , m_downloadingToFile(false)
228 , m_responseTextOverflow(false) 228 , m_responseTextOverflow(false)
(...skipping 10 matching lines...) Expand all
239 } 239 }
240 240
241 Document* XMLHttpRequest::document() const 241 Document* XMLHttpRequest::document() const
242 { 242 {
243 ASSERT(executionContext()->isDocument()); 243 ASSERT(executionContext()->isDocument());
244 return toDocument(executionContext()); 244 return toDocument(executionContext());
245 } 245 }
246 246
247 SecurityOrigin* XMLHttpRequest::securityOrigin() const 247 SecurityOrigin* XMLHttpRequest::securityOrigin() const
248 { 248 {
249 return m_securityOrigin ? m_securityOrigin.get() : executionContext()->secur ityOrigin(); 249 return m_isolatedWorldSecurityOrigin ? m_isolatedWorldSecurityOrigin.get() : executionContext()->securityOrigin();
250 } 250 }
251 251
252 XMLHttpRequest::State XMLHttpRequest::readyState() const 252 XMLHttpRequest::State XMLHttpRequest::readyState() const
253 { 253 {
254 return m_state; 254 return m_state;
255 } 255 }
256 256
257 ScriptString XMLHttpRequest::responseText(ExceptionState& exceptionState) 257 ScriptString XMLHttpRequest::responseText(ExceptionState& exceptionState)
258 { 258 {
259 if (m_responseTypeCode != ResponseTypeDefault && m_responseTypeCode != Respo nseTypeText) { 259 if (m_responseTypeCode != ResponseTypeDefault && m_responseTypeCode != Respo nseTypeText) {
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 // added after the request is started. 886 // added after the request is started.
887 m_uploadEventsAllowed = m_sameOriginRequest || uploadEvents || !FetchUtils:: isSimpleRequest(m_method, m_requestHeaders); 887 m_uploadEventsAllowed = m_sameOriginRequest || uploadEvents || !FetchUtils:: isSimpleRequest(m_method, m_requestHeaders);
888 888
889 ASSERT(executionContext()); 889 ASSERT(executionContext());
890 ExecutionContext& executionContext = *this->executionContext(); 890 ExecutionContext& executionContext = *this->executionContext();
891 891
892 ResourceRequest request(m_url); 892 ResourceRequest request(m_url);
893 request.setHTTPMethod(m_method); 893 request.setHTTPMethod(m_method);
894 request.setRequestContext(WebURLRequest::RequestContextXMLHttpRequest); 894 request.setRequestContext(WebURLRequest::RequestContextXMLHttpRequest);
895 request.setFetchCredentialsMode(m_includeCredentials ? WebURLRequest::FetchC redentialsModeInclude : WebURLRequest::FetchCredentialsModeSameOrigin); 895 request.setFetchCredentialsMode(m_includeCredentials ? WebURLRequest::FetchC redentialsModeInclude : WebURLRequest::FetchCredentialsModeSameOrigin);
896 request.setSkipServiceWorker(m_isolatedWorldSecurityOrigin);
896 897
897 InspectorInstrumentation::willLoadXHR(&executionContext, this, this, m_metho d, m_url, m_async, httpBody ? httpBody->deepCopy() : nullptr, m_requestHeaders, m_includeCredentials); 898 InspectorInstrumentation::willLoadXHR(&executionContext, this, this, m_metho d, m_url, m_async, httpBody ? httpBody->deepCopy() : nullptr, m_requestHeaders, m_includeCredentials);
898 899
899 if (httpBody) { 900 if (httpBody) {
900 ASSERT(m_method != "GET"); 901 ASSERT(m_method != "GET");
901 ASSERT(m_method != "HEAD"); 902 ASSERT(m_method != "HEAD");
902 request.setHTTPBody(httpBody); 903 request.setHTTPBody(httpBody);
903 } 904 }
904 905
905 if (m_requestHeaders.size() > 0) 906 if (m_requestHeaders.size() > 0)
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 visitor->trace(m_responseDocumentParser); 1716 visitor->trace(m_responseDocumentParser);
1716 visitor->trace(m_progressEventThrottle); 1717 visitor->trace(m_progressEventThrottle);
1717 visitor->trace(m_upload); 1718 visitor->trace(m_upload);
1718 visitor->trace(m_blobLoader); 1719 visitor->trace(m_blobLoader);
1719 XMLHttpRequestEventTarget::trace(visitor); 1720 XMLHttpRequestEventTarget::trace(visitor);
1720 DocumentParserClient::trace(visitor); 1721 DocumentParserClient::trace(visitor);
1721 ActiveDOMObject::trace(visitor); 1722 ActiveDOMObject::trace(visitor);
1722 } 1723 }
1723 1724
1724 } // namespace blink 1725 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698