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

Side by Side Diff: third_party/WebKit/Source/core/loader/PingLoader.cpp

Issue 2569983002: Revert of Remove DOMWindowProperty from PingLoaderImpl
Patch Set: Created 4 years 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
« no previous file with comments | « third_party/WebKit/Source/core/loader/PingLoader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 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 21 matching lines...) Expand all
32 #include "core/loader/PingLoader.h" 32 #include "core/loader/PingLoader.h"
33 33
34 #include "core/dom/DOMArrayBufferView.h" 34 #include "core/dom/DOMArrayBufferView.h"
35 #include "core/dom/Document.h" 35 #include "core/dom/Document.h"
36 #include "core/dom/SecurityContext.h" 36 #include "core/dom/SecurityContext.h"
37 #include "core/fetch/CrossOriginAccessControl.h" 37 #include "core/fetch/CrossOriginAccessControl.h"
38 #include "core/fetch/FetchContext.h" 38 #include "core/fetch/FetchContext.h"
39 #include "core/fetch/FetchInitiatorTypeNames.h" 39 #include "core/fetch/FetchInitiatorTypeNames.h"
40 #include "core/fetch/FetchUtils.h" 40 #include "core/fetch/FetchUtils.h"
41 #include "core/fetch/ResourceFetcher.h" 41 #include "core/fetch/ResourceFetcher.h"
42 #include "core/fetch/ResourceLoaderOptions.h"
43 #include "core/fetch/UniqueIdentifier.h" 42 #include "core/fetch/UniqueIdentifier.h"
44 #include "core/fileapi/File.h" 43 #include "core/fileapi/File.h"
45 #include "core/frame/FrameConsole.h" 44 #include "core/frame/FrameConsole.h"
46 #include "core/frame/LocalFrame.h" 45 #include "core/frame/LocalFrame.h"
47 #include "core/frame/csp/ContentSecurityPolicy.h" 46 #include "core/frame/csp/ContentSecurityPolicy.h"
48 #include "core/html/FormData.h" 47 #include "core/html/FormData.h"
49 #include "core/inspector/ConsoleMessage.h" 48 #include "core/inspector/ConsoleMessage.h"
50 #include "core/inspector/InspectorInstrumentation.h" 49 #include "core/inspector/InspectorInstrumentation.h"
51 #include "core/inspector/InspectorTraceEvents.h" 50 #include "core/inspector/InspectorTraceEvents.h"
52 #include "core/loader/FrameLoader.h" 51 #include "core/loader/FrameLoader.h"
53 #include "core/loader/FrameLoaderClient.h" 52 #include "core/loader/FrameLoaderClient.h"
54 #include "core/loader/MixedContentChecker.h" 53 #include "core/loader/MixedContentChecker.h"
55 #include "core/page/Page.h" 54 #include "core/page/Page.h"
56 #include "platform/Timer.h"
57 #include "platform/WebFrameScheduler.h" 55 #include "platform/WebFrameScheduler.h"
58 #include "platform/exported/WrappedResourceRequest.h" 56 #include "platform/exported/WrappedResourceRequest.h"
59 #include "platform/exported/WrappedResourceResponse.h" 57 #include "platform/exported/WrappedResourceResponse.h"
60 #include "platform/heap/Handle.h"
61 #include "platform/heap/SelfKeepAlive.h"
62 #include "platform/network/EncodedFormData.h" 58 #include "platform/network/EncodedFormData.h"
63 #include "platform/network/ParsedContentType.h" 59 #include "platform/network/ParsedContentType.h"
64 #include "platform/network/ResourceError.h" 60 #include "platform/network/ResourceError.h"
65 #include "platform/network/ResourceRequest.h" 61 #include "platform/network/ResourceRequest.h"
66 #include "platform/network/ResourceResponse.h" 62 #include "platform/network/ResourceResponse.h"
67 #include "platform/weborigin/SecurityOrigin.h" 63 #include "platform/weborigin/SecurityOrigin.h"
68 #include "platform/weborigin/SecurityPolicy.h" 64 #include "platform/weborigin/SecurityPolicy.h"
69 #include "public/platform/Platform.h" 65 #include "public/platform/Platform.h"
70 #include "public/platform/WebURLLoader.h" 66 #include "public/platform/WebURLLoader.h"
71 #include "public/platform/WebURLLoaderClient.h"
72 #include "public/platform/WebURLRequest.h" 67 #include "public/platform/WebURLRequest.h"
73 #include "public/platform/WebURLResponse.h" 68 #include "public/platform/WebURLResponse.h"
74 #include "wtf/Compiler.h" 69 #include "wtf/Compiler.h"
75 #include "wtf/Functional.h" 70 #include "wtf/Functional.h"
76 #include "wtf/Noncopyable.h"
77 #include "wtf/PtrUtil.h" 71 #include "wtf/PtrUtil.h"
78 72
79 namespace blink { 73 namespace blink {
80 74
81 namespace { 75 namespace {
82 76
83 class Beacon { 77 class Beacon {
84 STACK_ALLOCATED(); 78 STACK_ALLOCATED();
85 79
86 public: 80 public:
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 180
187 const AtomicString getContentType() const { return m_contentType; } 181 const AtomicString getContentType() const { return m_contentType; }
188 182
189 private: 183 private:
190 const Member<FormData> m_data; 184 const Member<FormData> m_data;
191 RefPtr<EncodedFormData> m_entityBody; 185 RefPtr<EncodedFormData> m_entityBody;
192 AtomicString m_contentType; 186 AtomicString m_contentType;
193 }; 187 };
194 188
195 class PingLoaderImpl : public GarbageCollectedFinalized<PingLoaderImpl>, 189 class PingLoaderImpl : public GarbageCollectedFinalized<PingLoaderImpl>,
190 public DOMWindowProperty,
196 private WebURLLoaderClient { 191 private WebURLLoaderClient {
192 USING_GARBAGE_COLLECTED_MIXIN(PingLoaderImpl);
197 WTF_MAKE_NONCOPYABLE(PingLoaderImpl); 193 WTF_MAKE_NONCOPYABLE(PingLoaderImpl);
198 194
199 public: 195 public:
200 PingLoaderImpl(LocalFrame*, 196 PingLoaderImpl(LocalFrame*,
201 ResourceRequest&, 197 ResourceRequest&,
202 const AtomicString&, 198 const AtomicString&,
203 StoredCredentials, 199 StoredCredentials,
204 bool); 200 bool);
205 ~PingLoaderImpl() override; 201 ~PingLoaderImpl() override;
206 202
207 DECLARE_VIRTUAL_TRACE(); 203 DECLARE_VIRTUAL_TRACE();
208 204
209 private: 205 private:
210 void dispose(); 206 void dispose();
211 207
212 // WebURLLoaderClient 208 // WebURLLoaderClient
213 bool willFollowRedirect(WebURLRequest&, const WebURLResponse&) override; 209 bool willFollowRedirect(WebURLRequest&, const WebURLResponse&) override;
214 void didReceiveResponse(const WebURLResponse&) final; 210 void didReceiveResponse(const WebURLResponse&) final;
215 void didReceiveData(const char*, int) final; 211 void didReceiveData(const char*, int) final;
216 void didFinishLoading(double, int64_t, int64_t) final; 212 void didFinishLoading(double, int64_t, int64_t) final;
217 void didFail(const WebURLError&, int64_t, int64_t) final; 213 void didFail(const WebURLError&, int64_t, int64_t) final;
218 214
219 void timeout(TimerBase*); 215 void timeout(TimerBase*);
220 216
221 void didFailLoading(LocalFrame*); 217 void didFailLoading(LocalFrame*);
222 218
223 WeakMember<LocalFrame> m_frame;
224 std::unique_ptr<WebURLLoader> m_loader; 219 std::unique_ptr<WebURLLoader> m_loader;
225 Timer<PingLoaderImpl> m_timeout; 220 Timer<PingLoaderImpl> m_timeout;
226 String m_url; 221 String m_url;
227 unsigned long m_identifier; 222 unsigned long m_identifier;
228 SelfKeepAlive<PingLoaderImpl> m_keepAlive; 223 SelfKeepAlive<PingLoaderImpl> m_keepAlive;
229 224
230 bool m_isBeacon; 225 bool m_isBeacon;
231 226
232 RefPtr<SecurityOrigin> m_origin; 227 RefPtr<SecurityOrigin> m_origin;
233 CORSEnabled m_corsMode; 228 CORSEnabled m_corsMode;
234 }; 229 };
235 230
236 PingLoaderImpl::PingLoaderImpl(LocalFrame* frame, 231 PingLoaderImpl::PingLoaderImpl(LocalFrame* frame,
237 ResourceRequest& request, 232 ResourceRequest& request,
238 const AtomicString& initiator, 233 const AtomicString& initiator,
239 StoredCredentials credentialsAllowed, 234 StoredCredentials credentialsAllowed,
240 bool isBeacon) 235 bool isBeacon)
241 : m_frame(frame), 236 : DOMWindowProperty(frame),
242 m_timeout(this, &PingLoaderImpl::timeout), 237 m_timeout(this, &PingLoaderImpl::timeout),
243 m_url(request.url()), 238 m_url(request.url()),
244 m_identifier(createUniqueIdentifier()), 239 m_identifier(createUniqueIdentifier()),
245 m_keepAlive(this), 240 m_keepAlive(this),
246 m_isBeacon(isBeacon), 241 m_isBeacon(isBeacon),
247 m_origin(frame->document()->getSecurityOrigin()), 242 m_origin(frame->document()->getSecurityOrigin()),
248 m_corsMode(IsCORSEnabled) { 243 m_corsMode(IsCORSEnabled) {
249 const AtomicString contentType = request.httpContentType(); 244 const AtomicString contentType = request.httpContentType();
250 if (!contentType.isNull() && 245 if (!contentType.isNull() &&
251 FetchUtils::isSimpleHeader(AtomicString("content-type"), contentType)) 246 FetchUtils::isSimpleHeader(AtomicString("content-type"), contentType))
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 DCHECK(!newRequest.isNull()); 306 DCHECK(!newRequest.isNull());
312 DCHECK(!redirectResponse.isNull()); 307 DCHECK(!redirectResponse.isNull());
313 308
314 String errorDescription; 309 String errorDescription;
315 ResourceLoaderOptions options; 310 ResourceLoaderOptions options;
316 // TODO(tyoshino): Save updated data in options.securityOrigin and pass it 311 // TODO(tyoshino): Save updated data in options.securityOrigin and pass it
317 // on the next time. 312 // on the next time.
318 if (!CrossOriginAccessControl::handleRedirect( 313 if (!CrossOriginAccessControl::handleRedirect(
319 m_origin, newRequest, redirectResponse, AllowStoredCredentials, 314 m_origin, newRequest, redirectResponse, AllowStoredCredentials,
320 options, errorDescription)) { 315 options, errorDescription)) {
321 if (m_frame) { 316 if (LocalFrame* localFrame = frame()) {
322 if (Document* document = m_frame->document()) { 317 if (localFrame->document()) {
323 document->addConsoleMessage(ConsoleMessage::create( 318 localFrame->document()->addConsoleMessage(ConsoleMessage::create(
324 JSMessageSource, ErrorMessageLevel, errorDescription)); 319 JSMessageSource, ErrorMessageLevel, errorDescription));
325 } 320 }
326 } 321 }
327 // Cancel the load and self destruct. 322 // Cancel the load and self destruct.
328 dispose(); 323 dispose();
329 324
330 return false; 325 return false;
331 } 326 }
332 // FIXME: http://crbug.com/427429 is needed to correctly propagate updates of 327 // FIXME: http://crbug.com/427429 is needed to correctly propagate updates of
333 // Origin: following this successful redirect. 328 // Origin: following this successful redirect.
334 329
335 return true; 330 return true;
336 } 331 }
337 332
338 void PingLoaderImpl::didReceiveResponse(const WebURLResponse& response) { 333 void PingLoaderImpl::didReceiveResponse(const WebURLResponse& response) {
339 if (m_frame) { 334 if (LocalFrame* frame = this->frame()) {
340 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data", 335 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data",
341 InspectorResourceFinishEvent::data(m_identifier, 0, true)); 336 InspectorResourceFinishEvent::data(m_identifier, 0, true));
342 const ResourceResponse& resourceResponse = response.toResourceResponse(); 337 const ResourceResponse& resourceResponse = response.toResourceResponse();
343 InspectorInstrumentation::didReceiveResourceResponse( 338 InspectorInstrumentation::didReceiveResourceResponse(frame, m_identifier, 0,
344 m_frame, m_identifier, 0, resourceResponse, 0); 339 resourceResponse, 0);
345 didFailLoading(m_frame); 340 didFailLoading(frame);
346 } 341 }
347 dispose(); 342 dispose();
348 } 343 }
349 344
350 void PingLoaderImpl::didReceiveData(const char*, int) { 345 void PingLoaderImpl::didReceiveData(const char*, int) {
351 if (m_frame) { 346 if (LocalFrame* frame = this->frame()) {
352 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data", 347 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data",
353 InspectorResourceFinishEvent::data(m_identifier, 0, true)); 348 InspectorResourceFinishEvent::data(m_identifier, 0, true));
354 didFailLoading(m_frame); 349 didFailLoading(frame);
355 } 350 }
356 dispose(); 351 dispose();
357 } 352 }
358 353
359 void PingLoaderImpl::didFinishLoading(double, int64_t, int64_t) { 354 void PingLoaderImpl::didFinishLoading(double, int64_t, int64_t) {
360 if (m_frame) { 355 if (LocalFrame* frame = this->frame()) {
361 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data", 356 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data",
362 InspectorResourceFinishEvent::data(m_identifier, 0, true)); 357 InspectorResourceFinishEvent::data(m_identifier, 0, true));
363 didFailLoading(m_frame); 358 didFailLoading(frame);
364 } 359 }
365 dispose(); 360 dispose();
366 } 361 }
367 362
368 void PingLoaderImpl::didFail(const WebURLError& resourceError, 363 void PingLoaderImpl::didFail(const WebURLError& resourceError,
369 int64_t, 364 int64_t,
370 int64_t) { 365 int64_t) {
371 if (m_frame) { 366 if (LocalFrame* frame = this->frame()) {
372 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data", 367 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data",
373 InspectorResourceFinishEvent::data(m_identifier, 0, true)); 368 InspectorResourceFinishEvent::data(m_identifier, 0, true));
374 didFailLoading(m_frame); 369 didFailLoading(frame);
375 } 370 }
376 dispose(); 371 dispose();
377 } 372 }
378 373
379 void PingLoaderImpl::timeout(TimerBase*) { 374 void PingLoaderImpl::timeout(TimerBase*) {
380 if (m_frame) { 375 if (LocalFrame* frame = this->frame()) {
381 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data", 376 TRACE_EVENT1("devtools.timeline", "ResourceFinish", "data",
382 InspectorResourceFinishEvent::data(m_identifier, 0, true)); 377 InspectorResourceFinishEvent::data(m_identifier, 0, true));
383 didFailLoading(m_frame); 378 didFailLoading(frame);
384 } 379 }
385 dispose(); 380 dispose();
386 } 381 }
387 382
388 void PingLoaderImpl::didFailLoading(LocalFrame* frame) { 383 void PingLoaderImpl::didFailLoading(LocalFrame* frame) {
389 InspectorInstrumentation::didFailLoading( 384 InspectorInstrumentation::didFailLoading(
390 frame, m_identifier, ResourceError::cancelledError(m_url)); 385 frame, m_identifier, ResourceError::cancelledError(m_url));
391 frame->console().didFailLoading(m_identifier, 386 frame->console().didFailLoading(m_identifier,
392 ResourceError::cancelledError(m_url)); 387 ResourceError::cancelledError(m_url));
393 } 388 }
394 389
395 DEFINE_TRACE(PingLoaderImpl) { 390 DEFINE_TRACE(PingLoaderImpl) {
396 visitor->trace(m_frame); 391 DOMWindowProperty::trace(visitor);
397 } 392 }
398 393
399 void finishPingRequestInitialization( 394 void finishPingRequestInitialization(
400 ResourceRequest& request, 395 ResourceRequest& request,
401 LocalFrame* frame, 396 LocalFrame* frame,
402 WebURLRequest::RequestContext requestContext) { 397 WebURLRequest::RequestContext requestContext) {
403 request.setRequestContext(requestContext); 398 request.setRequestContext(requestContext);
404 FetchContext& fetchContext = frame->document()->fetcher()->context(); 399 FetchContext& fetchContext = frame->document()->fetcher()->context();
405 fetchContext.addAdditionalRequestHeaders(request, FetchSubresource); 400 fetchContext.addAdditionalRequestHeaders(request, FetchSubresource);
406 fetchContext.populateRequestData(request); 401 fetchContext.populateRequestData(request);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 bool PingLoader::sendBeacon(LocalFrame* frame, 553 bool PingLoader::sendBeacon(LocalFrame* frame,
559 int allowance, 554 int allowance,
560 const KURL& beaconURL, 555 const KURL& beaconURL,
561 Blob* data, 556 Blob* data,
562 int& payloadLength) { 557 int& payloadLength) {
563 BeaconBlob beacon(data); 558 BeaconBlob beacon(data);
564 return sendBeaconCommon(frame, allowance, beaconURL, beacon, payloadLength); 559 return sendBeaconCommon(frame, allowance, beaconURL, beacon, payloadLength);
565 } 560 }
566 561
567 } // namespace blink 562 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/PingLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698