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

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: Created 4 years, 2 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 /* 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 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 272 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
273 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledReload, 273 maybeLogScheduledNavigationClobber(ScheduledNavigationType::ScheduledReload,
274 frame); 274 frame);
275 frame->loader().load(request, FrameLoadTypeReload); 275 frame->loader().load(request, FrameLoadTypeReload);
276 } 276 }
277 277
278 private: 278 private:
279 ScheduledReload() : ScheduledNavigation(0.0, nullptr, true, true) {} 279 ScheduledReload() : ScheduledNavigation(0.0, nullptr, true, true) {}
280 }; 280 };
281 281
282 class ScheduledPageBlock final : public ScheduledURLNavigation { 282 class ScheduledPageBlock final : public ScheduledNavigation {
283 public: 283 public:
284 static ScheduledPageBlock* create(Document* originDocument, 284 static ScheduledPageBlock* create(Document* originDocument, int reason) {
285 const String& url) { 285 return new ScheduledPageBlock(originDocument, reason);
286 return new ScheduledPageBlock(originDocument, url);
287 } 286 }
288 287
289 void fire(LocalFrame* frame) override { 288 void fire(LocalFrame* frame) override {
290 std::unique_ptr<UserGestureIndicator> gestureIndicator = 289 frame->loader().client()->loadErrorPage(reason_);
291 createUserGestureIndicator();
292 SubstituteData substituteData(SharedBuffer::create(), "text/plain", "UTF-8",
293 KURL(), ForceSynchronousLoad);
294 FrameLoadRequest request(originDocument(), url(), substituteData);
295 request.setReplacesCurrentItem(true);
296 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
297 maybeLogScheduledNavigationClobber(
298 ScheduledNavigationType::ScheduledPageBlock, frame);
299 frame->loader().load(request);
300 } 290 }
301 291
302 private: 292 private:
303 ScheduledPageBlock(Document* originDocument, const String& url) 293 ScheduledPageBlock(Document* originDocument, int reason)
304 : ScheduledURLNavigation(0.0, originDocument, url, true, true) {} 294 : ScheduledNavigation(0.0, originDocument, true, true), reason_(reason) {}
295
296 int reason_;
305 }; 297 };
306 298
307 class ScheduledFormSubmission final : public ScheduledNavigation { 299 class ScheduledFormSubmission final : public ScheduledNavigation {
308 public: 300 public:
309 static ScheduledFormSubmission* create(Document* document, 301 static ScheduledFormSubmission* create(Document* document,
310 FormSubmission* submission, 302 FormSubmission* submission,
311 bool replacesCurrentItem) { 303 bool replacesCurrentItem) {
312 return new ScheduledFormSubmission(document, submission, 304 return new ScheduledFormSubmission(document, submission,
313 replacesCurrentItem); 305 replacesCurrentItem);
314 } 306 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 447 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
456 m_frame->loader().load(request); 448 m_frame->loader().load(request);
457 return; 449 return;
458 } 450 }
459 } 451 }
460 452
461 schedule(ScheduledLocationChange::create(originDocument, url, 453 schedule(ScheduledLocationChange::create(originDocument, url,
462 replacesCurrentItem)); 454 replacesCurrentItem));
463 } 455 }
464 456
465 void NavigationScheduler::schedulePageBlock(Document* originDocument) { 457 void NavigationScheduler::schedulePageBlock(Document* originDocument,
458 int reason) {
466 DCHECK(m_frame->page()); 459 DCHECK(m_frame->page());
467 const KURL& url = m_frame->document()->url(); 460 schedule(ScheduledPageBlock::create(originDocument, reason));
468 schedule(ScheduledPageBlock::create(originDocument, url));
469 } 461 }
470 462
471 void NavigationScheduler::scheduleFormSubmission(Document* document, 463 void NavigationScheduler::scheduleFormSubmission(Document* document,
472 FormSubmission* submission) { 464 FormSubmission* submission) {
473 DCHECK(m_frame->page()); 465 DCHECK(m_frame->page());
474 schedule(ScheduledFormSubmission::create(document, submission, 466 schedule(ScheduledFormSubmission::create(document, submission,
475 mustReplaceCurrentItem(m_frame))); 467 mustReplaceCurrentItem(m_frame)));
476 } 468 }
477 469
478 void NavigationScheduler::scheduleReload() { 470 void NavigationScheduler::scheduleReload() {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 m_navigateTaskFactory->cancel(); 541 m_navigateTaskFactory->cancel();
550 m_redirect.clear(); 542 m_redirect.clear();
551 } 543 }
552 544
553 DEFINE_TRACE(NavigationScheduler) { 545 DEFINE_TRACE(NavigationScheduler) {
554 visitor->trace(m_frame); 546 visitor->trace(m_frame);
555 visitor->trace(m_redirect); 547 visitor->trace(m_redirect);
556 } 548 }
557 549
558 } // namespace blink 550 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698