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

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

Issue 2425663002: Add an error page for resources blocked via XSS Auditor. (Closed)
Patch Set: Test. 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
5 * (http://www.torchmobile.com/) 5 * (http://www.torchmobile.com/)
6 * Copyright (C) 2009 Adam Barth. All rights reserved. 6 * Copyright (C) 2009 Adam Barth. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 271 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
272 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledReload, 272 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledReload,
273 frame); 273 frame);
274 frame->loader().load(request, FrameLoadTypeReload); 274 frame->loader().load(request, FrameLoadTypeReload);
275 } 275 }
276 276
277 private: 277 private:
278 ScheduledReload() : ScheduledNavigation(0.0, nullptr, true, true) {} 278 ScheduledReload() : ScheduledNavigation(0.0, nullptr, true, true) {}
279 }; 279 };
280 280
281 class ScheduledPageBlock final : public ScheduledURLNavigation { 281 class ScheduledPageBlock final : public ScheduledNavigation {
282 public: 282 public:
283 static ScheduledPageBlock* create(Document* originDocument, 283 static ScheduledPageBlock* create(Document* originDocument, int reason) {
284 const String& url) { 284 return new ScheduledPageBlock(originDocument, reason);
285 return new ScheduledPageBlock(originDocument, url);
286 } 285 }
287 286
288 void fire(LocalFrame* frame) override { 287 void fire(LocalFrame* frame) override {
289 std::unique_ptr<UserGestureIndicator> gestureIndicator = 288 frame->loader().client()->loadErrorPage(m_reason);
290 createUserGestureIndicator();
291 SubstituteData substituteData(SharedBuffer::create(), "text/plain", "UTF-8",
292 KURL(), ForceSynchronousLoad);
293 FrameLoadRequest request(originDocument(), url(), substituteData);
294 request.setReplacesCurrentItem(true);
295 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
296 maybeLogScheduledNavigationClobber(
297 ScheduledNavigationType::ScheduledPageBlock, frame);
298 frame->loader().load(request);
299 } 289 }
300 290
301 private: 291 private:
302 ScheduledPageBlock(Document* originDocument, const String& url) 292 ScheduledPageBlock(Document* originDocument, int reason)
303 : ScheduledURLNavigation(0.0, originDocument, url, true, true) {} 293 : ScheduledNavigation(0.0, originDocument, true, true),
294 m_reason(reason) {}
295
296 int m_reason;
304 }; 297 };
305 298
306 class ScheduledFormSubmission final : public ScheduledNavigation { 299 class ScheduledFormSubmission final : public ScheduledNavigation {
307 public: 300 public:
308 static ScheduledFormSubmission* create(Document* document, 301 static ScheduledFormSubmission* create(Document* document,
309 FormSubmission* submission, 302 FormSubmission* submission,
310 bool replacesCurrentItem) { 303 bool replacesCurrentItem) {
311 return new ScheduledFormSubmission(document, submission, 304 return new ScheduledFormSubmission(document, submission,
312 replacesCurrentItem); 305 replacesCurrentItem);
313 } 306 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 444 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
452 m_frame->loader().load(request); 445 m_frame->loader().load(request);
453 return; 446 return;
454 } 447 }
455 } 448 }
456 449
457 schedule(ScheduledLocationChange::create(originDocument, url, 450 schedule(ScheduledLocationChange::create(originDocument, url,
458 replacesCurrentItem)); 451 replacesCurrentItem));
459 } 452 }
460 453
461 void NavigationScheduler::schedulePageBlock(Document* originDocument) { 454 void NavigationScheduler::schedulePageBlock(Document* originDocument,
455 int reason) {
462 DCHECK(m_frame->page()); 456 DCHECK(m_frame->page());
463 const KURL& url = m_frame->document()->url(); 457 schedule(ScheduledPageBlock::create(originDocument, reason));
464 schedule(ScheduledPageBlock::create(originDocument, url));
465 } 458 }
466 459
467 void NavigationScheduler::scheduleFormSubmission(Document* document, 460 void NavigationScheduler::scheduleFormSubmission(Document* document,
468 FormSubmission* submission) { 461 FormSubmission* submission) {
469 DCHECK(m_frame->page()); 462 DCHECK(m_frame->page());
470 schedule(ScheduledFormSubmission::create(document, submission, 463 schedule(ScheduledFormSubmission::create(document, submission,
471 mustReplaceCurrentItem(m_frame))); 464 mustReplaceCurrentItem(m_frame)));
472 } 465 }
473 466
474 void NavigationScheduler::scheduleReload() { 467 void NavigationScheduler::scheduleReload() {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 m_navigateTaskHandle.cancel(); 543 m_navigateTaskHandle.cancel();
551 m_redirect.clear(); 544 m_redirect.clear();
552 } 545 }
553 546
554 DEFINE_TRACE(NavigationScheduler) { 547 DEFINE_TRACE(NavigationScheduler) {
555 visitor->trace(m_frame); 548 visitor->trace(m_frame);
556 visitor->trace(m_redirect); 549 visitor->trace(m_redirect);
557 } 550 }
558 551
559 } // namespace blink 552 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698