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

Side by Side Diff: Source/modules/serviceworkers/RespondWithObserver.cpp

Issue 1252443003: Revert of Shows error messages in the inspector when .respondWith() is called with wrong responses. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 5 months 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "modules/serviceworkers/RespondWithObserver.h" 6 #include "modules/serviceworkers/RespondWithObserver.h"
7 7
8 #include "bindings/core/v8/ScriptFunction.h" 8 #include "bindings/core/v8/ScriptFunction.h"
9 #include "bindings/core/v8/ScriptPromise.h" 9 #include "bindings/core/v8/ScriptPromise.h"
10 #include "bindings/core/v8/ScriptValue.h" 10 #include "bindings/core/v8/ScriptValue.h"
11 #include "bindings/core/v8/V8Binding.h" 11 #include "bindings/core/v8/V8Binding.h"
12 #include "bindings/modules/v8/V8Response.h" 12 #include "bindings/modules/v8/V8Response.h"
13 #include "core/dom/ExceptionCode.h" 13 #include "core/dom/ExceptionCode.h"
14 #include "core/dom/ExecutionContext.h" 14 #include "core/dom/ExecutionContext.h"
15 #include "core/inspector/ConsoleMessage.h" 15 #include "core/inspector/ConsoleMessage.h"
16 #include "core/streams/Stream.h" 16 #include "core/streams/Stream.h"
17 #include "modules/fetch/BodyStreamBuffer.h" 17 #include "modules/fetch/BodyStreamBuffer.h"
18 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h" 18 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h"
19 #include "platform/RuntimeEnabledFeatures.h" 19 #include "platform/RuntimeEnabledFeatures.h"
20 #include "public/platform/WebServiceWorkerResponse.h" 20 #include "public/platform/WebServiceWorkerResponse.h"
21 #include "wtf/Assertions.h" 21 #include "wtf/Assertions.h"
22 #include "wtf/RefPtr.h" 22 #include "wtf/RefPtr.h"
23 #include <v8.h> 23 #include <v8.h>
24 24
25 namespace blink { 25 namespace blink {
26 namespace {
27
28 // Returns the error message to let the developer know about the reason of the u nusual failures.
29 const String getMessageForResponseError(WebServiceWorkerResponseError error, con st KURL& requestURL)
30 {
31 String errorMessage = "The FetchEvent for \"" + requestURL.string() + "\" re sulted in a network error response: ";
32 switch (error) {
33 case WebServiceWorkerResponseErrorPromiseRejected:
34 errorMessage = errorMessage + "the promise was rejected.";
35 break;
36 case WebServiceWorkerResponseErrorDefaultPrevented:
37 errorMessage = errorMessage + "preventDefault() was called without calli ng respondWith().";
38 break;
39 case WebServiceWorkerResponseErrorNoV8Instance:
40 errorMessage = errorMessage + "an object that was not a Response was pas sed to respondWith().";
41 break;
42 case WebServiceWorkerResponseErrorResponseTypeError:
43 errorMessage = errorMessage + "the promise was resolved with an error re sponse object.";
44 break;
45 case WebServiceWorkerResponseErrorResponseTypeOpaque:
46 errorMessage = errorMessage + "an \"opaque\" response was used for a req uest whose type is not no-cors";
47 break;
48 case WebServiceWorkerResponseErrorResponseTypeNotBasicOrDefault:
49 errorMessage = errorMessage + "the response for a client request must ha ve type \"basic\" or \"default\".";
50 break;
51 case WebServiceWorkerResponseErrorBodyUsed:
52 errorMessage = errorMessage + "a Response whose \"bodyUsed\" is \"true\" cannot be used to respond to a request.";
53 break;
54 case WebServiceWorkerResponseErrorUnknown:
55 default:
56 errorMessage = errorMessage + "an unexpected error occurred.";
57 break;
58 }
59 return errorMessage;
60 }
61
62 } // namespace
63 26
64 class RespondWithObserver::ThenFunction final : public ScriptFunction { 27 class RespondWithObserver::ThenFunction final : public ScriptFunction {
65 public: 28 public:
66 enum ResolveType { 29 enum ResolveType {
67 Fulfilled, 30 Fulfilled,
68 Rejected, 31 Rejected,
69 }; 32 };
70 33
71 static v8::Local<v8::Function> createFunction(ScriptState* scriptState, Resp ondWithObserver* observer, ResolveType type) 34 static v8::Local<v8::Function> createFunction(ScriptState* scriptState, Resp ondWithObserver* observer, ResolveType type)
72 { 35 {
(...skipping 26 matching lines...) Expand all
99 m_observer->responseWasFulfilled(value); 62 m_observer->responseWasFulfilled(value);
100 } 63 }
101 m_observer = nullptr; 64 m_observer = nullptr;
102 return value; 65 return value;
103 } 66 }
104 67
105 Member<RespondWithObserver> m_observer; 68 Member<RespondWithObserver> m_observer;
106 ResolveType m_resolveType; 69 ResolveType m_resolveType;
107 }; 70 };
108 71
109 RespondWithObserver* RespondWithObserver::create(ExecutionContext* context, int eventID, const KURL& requestURL, WebURLRequest::FetchRequestMode requestMode, We bURLRequest::FrameType frameType) 72 RespondWithObserver* RespondWithObserver::create(ExecutionContext* context, int eventID, WebURLRequest::FetchRequestMode requestMode, WebURLRequest::FrameType f rameType)
110 { 73 {
111 return new RespondWithObserver(context, eventID, requestURL, requestMode, fr ameType); 74 return new RespondWithObserver(context, eventID, requestMode, frameType);
112 } 75 }
113 76
114 void RespondWithObserver::contextDestroyed() 77 void RespondWithObserver::contextDestroyed()
115 { 78 {
116 ContextLifecycleObserver::contextDestroyed(); 79 ContextLifecycleObserver::contextDestroyed();
117 m_state = Done; 80 m_state = Done;
118 } 81 }
119 82
120 void RespondWithObserver::didDispatchEvent(bool defaultPrevented) 83 void RespondWithObserver::didDispatchEvent(bool defaultPrevented)
121 { 84 {
(...skipping 19 matching lines...) Expand all
141 104
142 m_state = Pending; 105 m_state = Pending;
143 ScriptPromise::cast(scriptState, value).then( 106 ScriptPromise::cast(scriptState, value).then(
144 ThenFunction::createFunction(scriptState, this, ThenFunction::Fulfilled) , 107 ThenFunction::createFunction(scriptState, this, ThenFunction::Fulfilled) ,
145 ThenFunction::createFunction(scriptState, this, ThenFunction::Rejected)) ; 108 ThenFunction::createFunction(scriptState, this, ThenFunction::Rejected)) ;
146 } 109 }
147 110
148 void RespondWithObserver::responseWasRejected(WebServiceWorkerResponseError erro r) 111 void RespondWithObserver::responseWasRejected(WebServiceWorkerResponseError erro r)
149 { 112 {
150 ASSERT(executionContext()); 113 ASSERT(executionContext());
151 executionContext()->addConsoleMessage(ConsoleMessage::create(JSMessageSource , WarningMessageLevel, getMessageForResponseError(error, m_requestURL)));
152
153 // The default value of WebServiceWorkerResponse's status is 0, which maps 114 // The default value of WebServiceWorkerResponse's status is 0, which maps
154 // to a network error. 115 // to a network error.
155 WebServiceWorkerResponse webResponse; 116 WebServiceWorkerResponse webResponse;
156 webResponse.setError(error); 117 webResponse.setError(error);
157 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleFetchEven t(m_eventID, webResponse); 118 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleFetchEven t(m_eventID, webResponse);
158 m_state = Done; 119 m_state = Done;
159 } 120 }
160 121
161 void RespondWithObserver::responseWasFulfilled(const ScriptValue& value) 122 void RespondWithObserver::responseWasFulfilled(const ScriptValue& value)
162 { 123 {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 buffer->startLoading(loader, nullptr); 167 buffer->startLoading(loader, nullptr);
207 m_state = Done; 168 m_state = Done;
208 return; 169 return;
209 } 170 }
210 WebServiceWorkerResponse webResponse; 171 WebServiceWorkerResponse webResponse;
211 response->populateWebServiceWorkerResponse(webResponse); 172 response->populateWebServiceWorkerResponse(webResponse);
212 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleFetchEven t(m_eventID, webResponse); 173 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleFetchEven t(m_eventID, webResponse);
213 m_state = Done; 174 m_state = Done;
214 } 175 }
215 176
216 RespondWithObserver::RespondWithObserver(ExecutionContext* context, int eventID, const KURL& requestURL, WebURLRequest::FetchRequestMode requestMode, WebURLRequ est::FrameType frameType) 177 RespondWithObserver::RespondWithObserver(ExecutionContext* context, int eventID, WebURLRequest::FetchRequestMode requestMode, WebURLRequest::FrameType frameType )
217 : ContextLifecycleObserver(context) 178 : ContextLifecycleObserver(context)
218 , m_eventID(eventID) 179 , m_eventID(eventID)
219 , m_requestURL(requestURL)
220 , m_requestMode(requestMode) 180 , m_requestMode(requestMode)
221 , m_frameType(frameType) 181 , m_frameType(frameType)
222 , m_state(Initial) 182 , m_state(Initial)
223 { 183 {
224 } 184 }
225 185
226 DEFINE_TRACE(RespondWithObserver) 186 DEFINE_TRACE(RespondWithObserver)
227 { 187 {
228 ContextLifecycleObserver::trace(visitor); 188 ContextLifecycleObserver::trace(visitor);
229 } 189 }
230 190
231 } // namespace blink 191 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/RespondWithObserver.h ('k') | Source/web/ServiceWorkerGlobalScopeProxy.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698