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

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: frameNavigation test. Created 4 years, 1 month 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(m_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),
295 m_reason(reason) {}
296
297 int m_reason;
305 }; 298 };
306 299
307 class ScheduledFormSubmission final : public ScheduledNavigation { 300 class ScheduledFormSubmission final : public ScheduledNavigation {
308 public: 301 public:
309 static ScheduledFormSubmission* create(Document* document, 302 static ScheduledFormSubmission* create(Document* document,
310 FormSubmission* submission, 303 FormSubmission* submission,
311 bool replacesCurrentItem) { 304 bool replacesCurrentItem) {
312 return new ScheduledFormSubmission(document, submission, 305 return new ScheduledFormSubmission(document, submission,
313 replacesCurrentItem); 306 replacesCurrentItem);
314 } 307 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 448 request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
456 m_frame->loader().load(request); 449 m_frame->loader().load(request);
457 return; 450 return;
458 } 451 }
459 } 452 }
460 453
461 schedule(ScheduledLocationChange::create(originDocument, url, 454 schedule(ScheduledLocationChange::create(originDocument, url,
462 replacesCurrentItem)); 455 replacesCurrentItem));
463 } 456 }
464 457
465 void NavigationScheduler::schedulePageBlock(Document* originDocument) { 458 void NavigationScheduler::schedulePageBlock(Document* originDocument,
459 int reason) {
466 DCHECK(m_frame->page()); 460 DCHECK(m_frame->page());
467 const KURL& url = m_frame->document()->url(); 461 schedule(ScheduledPageBlock::create(originDocument, reason));
468 schedule(ScheduledPageBlock::create(originDocument, url));
469 } 462 }
470 463
471 void NavigationScheduler::scheduleFormSubmission(Document* document, 464 void NavigationScheduler::scheduleFormSubmission(Document* document,
472 FormSubmission* submission) { 465 FormSubmission* submission) {
473 DCHECK(m_frame->page()); 466 DCHECK(m_frame->page());
474 schedule(ScheduledFormSubmission::create(document, submission, 467 schedule(ScheduledFormSubmission::create(document, submission,
475 mustReplaceCurrentItem(m_frame))); 468 mustReplaceCurrentItem(m_frame)));
476 } 469 }
477 470
478 void NavigationScheduler::scheduleReload() { 471 void NavigationScheduler::scheduleReload() {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 m_navigateTaskFactory->cancel(); 542 m_navigateTaskFactory->cancel();
550 m_redirect.clear(); 543 m_redirect.clear();
551 } 544 }
552 545
553 DEFINE_TRACE(NavigationScheduler) { 546 DEFINE_TRACE(NavigationScheduler) {
554 visitor->trace(m_frame); 547 visitor->trace(m_frame);
555 visitor->trace(m_redirect); 548 visitor->trace(m_redirect);
556 } 549 }
557 550
558 } // namespace blink 551 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698