OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010, 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2010, 2011, 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 void HTTPRequestHeaderValidator::visitHeader(const WebString& name, | 74 void HTTPRequestHeaderValidator::visitHeader(const WebString& name, |
75 const WebString& value) { | 75 const WebString& value) { |
76 m_isSafe = m_isSafe && isValidHTTPToken(name) && | 76 m_isSafe = m_isSafe && isValidHTTPToken(name) && |
77 !FetchUtils::isForbiddenHeaderName(name) && | 77 !FetchUtils::isForbiddenHeaderName(name) && |
78 isValidHTTPHeaderValue(value); | 78 isValidHTTPHeaderValue(value); |
79 } | 79 } |
80 | 80 |
81 } // namespace | 81 } // namespace |
82 | 82 |
83 // This class bridges the interface differences between WebCore and WebKit loade
r clients. | 83 // This class bridges the interface differences between WebCore and WebKit |
| 84 // loader clients. |
84 // It forwards its ThreadableLoaderClient notifications to a WebURLLoaderClient. | 85 // It forwards its ThreadableLoaderClient notifications to a WebURLLoaderClient. |
85 class AssociatedURLLoader::ClientAdapter final | 86 class AssociatedURLLoader::ClientAdapter final |
86 : public DocumentThreadableLoaderClient { | 87 : public DocumentThreadableLoaderClient { |
87 WTF_MAKE_NONCOPYABLE(ClientAdapter); | 88 WTF_MAKE_NONCOPYABLE(ClientAdapter); |
88 | 89 |
89 public: | 90 public: |
90 static std::unique_ptr<ClientAdapter> create(AssociatedURLLoader*, | 91 static std::unique_ptr<ClientAdapter> create(AssociatedURLLoader*, |
91 WebURLLoaderClient*, | 92 WebURLLoaderClient*, |
92 const WebURLLoaderOptions&); | 93 const WebURLLoaderOptions&); |
93 | 94 |
(...skipping 11 matching lines...) Expand all Loading... |
105 void didFail(const ResourceError&) override; | 106 void didFail(const ResourceError&) override; |
106 void didFailRedirectCheck() override; | 107 void didFailRedirectCheck() override; |
107 // DocumentThreadableLoaderClient | 108 // DocumentThreadableLoaderClient |
108 void willFollowRedirect( | 109 void willFollowRedirect( |
109 ResourceRequest& /*newRequest*/, | 110 ResourceRequest& /*newRequest*/, |
110 const ResourceResponse& /*redirectResponse*/) override; | 111 const ResourceResponse& /*redirectResponse*/) override; |
111 | 112 |
112 // Sets an error to be reported back to the client, asychronously. | 113 // Sets an error to be reported back to the client, asychronously. |
113 void setDelayedError(const ResourceError&); | 114 void setDelayedError(const ResourceError&); |
114 | 115 |
115 // Enables forwarding of error notifications to the WebURLLoaderClient. These
must be | 116 // Enables forwarding of error notifications to the WebURLLoaderClient. These |
116 // deferred until after the call to AssociatedURLLoader::loadAsynchronously()
completes. | 117 // must be deferred until after the call to |
| 118 // AssociatedURLLoader::loadAsynchronously() completes. |
117 void enableErrorNotifications(); | 119 void enableErrorNotifications(); |
118 | 120 |
119 // Stops loading and releases the DocumentThreadableLoader as early as possibl
e. | 121 // Stops loading and releases the DocumentThreadableLoader as early as |
| 122 // possible. |
120 WebURLLoaderClient* releaseClient() { | 123 WebURLLoaderClient* releaseClient() { |
121 WebURLLoaderClient* client = m_client; | 124 WebURLLoaderClient* client = m_client; |
122 m_client = nullptr; | 125 m_client = nullptr; |
123 return client; | 126 return client; |
124 } | 127 } |
125 | 128 |
126 private: | 129 private: |
127 ClientAdapter(AssociatedURLLoader*, | 130 ClientAdapter(AssociatedURLLoader*, |
128 WebURLLoaderClient*, | 131 WebURLLoaderClient*, |
129 const WebURLLoaderOptions&); | 132 const WebURLLoaderOptions&); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 if (m_enableErrorNotifications) | 275 if (m_enableErrorNotifications) |
273 notifyError(&m_errorTimer); | 276 notifyError(&m_errorTimer); |
274 } | 277 } |
275 | 278 |
276 void AssociatedURLLoader::ClientAdapter::didFailRedirectCheck() { | 279 void AssociatedURLLoader::ClientAdapter::didFailRedirectCheck() { |
277 didFail(ResourceError()); | 280 didFail(ResourceError()); |
278 } | 281 } |
279 | 282 |
280 void AssociatedURLLoader::ClientAdapter::enableErrorNotifications() { | 283 void AssociatedURLLoader::ClientAdapter::enableErrorNotifications() { |
281 m_enableErrorNotifications = true; | 284 m_enableErrorNotifications = true; |
282 // If an error has already been received, start a timer to report it to the cl
ient | 285 // If an error has already been received, start a timer to report it to the |
283 // after AssociatedURLLoader::loadAsynchronously has returned to the caller. | 286 // client after AssociatedURLLoader::loadAsynchronously has returned to the |
| 287 // caller. |
284 if (m_didFail) | 288 if (m_didFail) |
285 m_errorTimer.startOneShot(0, BLINK_FROM_HERE); | 289 m_errorTimer.startOneShot(0, BLINK_FROM_HERE); |
286 } | 290 } |
287 | 291 |
288 void AssociatedURLLoader::ClientAdapter::notifyError(TimerBase* timer) { | 292 void AssociatedURLLoader::ClientAdapter::notifyError(TimerBase* timer) { |
289 ASSERT_UNUSED(timer, timer == &m_errorTimer); | 293 ASSERT_UNUSED(timer, timer == &m_errorTimer); |
290 | 294 |
291 if (!m_client) | 295 if (!m_client) |
292 return; | 296 return; |
293 | 297 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 | 390 |
387 ResourceLoaderOptions resourceLoaderOptions; | 391 ResourceLoaderOptions resourceLoaderOptions; |
388 resourceLoaderOptions.allowCredentials = m_options.allowCredentials | 392 resourceLoaderOptions.allowCredentials = m_options.allowCredentials |
389 ? AllowStoredCredentials | 393 ? AllowStoredCredentials |
390 : DoNotAllowStoredCredentials; | 394 : DoNotAllowStoredCredentials; |
391 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; | 395 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; |
392 | 396 |
393 const ResourceRequest& webcoreRequest = newRequest.toResourceRequest(); | 397 const ResourceRequest& webcoreRequest = newRequest.toResourceRequest(); |
394 if (webcoreRequest.requestContext() == | 398 if (webcoreRequest.requestContext() == |
395 WebURLRequest::RequestContextUnspecified) { | 399 WebURLRequest::RequestContextUnspecified) { |
396 // FIXME: We load URLs without setting a TargetType (and therefore a reque
st context) in several | 400 // FIXME: We load URLs without setting a TargetType (and therefore a |
397 // places in content/ (P2PPortAllocatorSession::AllocateLegacyRelaySession
, for example). Remove | 401 // request context) in several places in content/ |
398 // this once those places are patched up. | 402 // (P2PPortAllocatorSession::AllocateLegacyRelaySession, for example). |
| 403 // Remove this once those places are patched up. |
399 newRequest.setRequestContext(WebURLRequest::RequestContextInternal); | 404 newRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
400 } | 405 } |
401 | 406 |
402 Document* document = toDocument(m_observer->lifecycleContext()); | 407 Document* document = toDocument(m_observer->lifecycleContext()); |
403 DCHECK(document); | 408 DCHECK(document); |
404 m_loader = DocumentThreadableLoader::create( | 409 m_loader = DocumentThreadableLoader::create( |
405 *document, m_clientAdapter.get(), options, resourceLoaderOptions); | 410 *document, m_clientAdapter.get(), options, resourceLoaderOptions); |
406 m_loader->start(webcoreRequest); | 411 m_loader->start(webcoreRequest); |
407 } | 412 } |
408 | 413 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 // there could be a WebURLLoader instance behind the | 482 // there could be a WebURLLoader instance behind the |
478 // DocumentThreadableLoader instance. So, for safety, we chose to just | 483 // DocumentThreadableLoader instance. So, for safety, we chose to just |
479 // crash here. | 484 // crash here. |
480 RELEASE_ASSERT(ThreadState::current()); | 485 RELEASE_ASSERT(ThreadState::current()); |
481 | 486 |
482 m_observer->dispose(); | 487 m_observer->dispose(); |
483 m_observer = nullptr; | 488 m_observer = nullptr; |
484 } | 489 } |
485 | 490 |
486 } // namespace blink | 491 } // namespace blink |
OLD | NEW |