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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 830053004: Suppress accessibility events when user is navigating away. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 2484 matching lines...) Expand 10 before | Expand all | Expand 10 after
2495 void WebContentsImpl::DidFailProvisionalLoadWithError( 2495 void WebContentsImpl::DidFailProvisionalLoadWithError(
2496 RenderFrameHostImpl* render_frame_host, 2496 RenderFrameHostImpl* render_frame_host,
2497 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) { 2497 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) {
2498 GURL validated_url(params.url); 2498 GURL validated_url(params.url);
2499 FOR_EACH_OBSERVER(WebContentsObserver, 2499 FOR_EACH_OBSERVER(WebContentsObserver,
2500 observers_, 2500 observers_,
2501 DidFailProvisionalLoad(render_frame_host, 2501 DidFailProvisionalLoad(render_frame_host,
2502 validated_url, 2502 validated_url,
2503 params.error_code, 2503 params.error_code,
2504 params.error_description)); 2504 params.error_description));
2505
2506 BrowserAccessibilityManager* manager =
nasko 2015/02/03 17:28:05 nit: wrong indent.
dmazzoni 2015/02/04 20:56:06 Done.
2507 render_frame_host->browser_accessibility_manager();
2508 if (manager)
2509 manager->NavigationFailed();
2505 } 2510 }
2506 2511
2507 void WebContentsImpl::DidFailLoadWithError( 2512 void WebContentsImpl::DidFailLoadWithError(
2508 RenderFrameHostImpl* render_frame_host, 2513 RenderFrameHostImpl* render_frame_host,
2509 const GURL& url, 2514 const GURL& url,
2510 int error_code, 2515 int error_code,
2511 const base::string16& error_description) { 2516 const base::string16& error_description) {
2512 FOR_EACH_OBSERVER( 2517 FOR_EACH_OBSERVER(
2513 WebContentsObserver, 2518 WebContentsObserver,
2514 observers_, 2519 observers_,
2515 DidFailLoad(render_frame_host, url, error_code, error_description)); 2520 DidFailLoad(render_frame_host, url, error_code, error_description));
2516 } 2521 }
2517 2522
2518 void WebContentsImpl::NotifyChangedNavigationState( 2523 void WebContentsImpl::NotifyChangedNavigationState(
2519 InvalidateTypes changed_flags) { 2524 InvalidateTypes changed_flags) {
2520 NotifyNavigationStateChanged(changed_flags); 2525 NotifyNavigationStateChanged(changed_flags);
2521 } 2526 }
2522 2527
2523 void WebContentsImpl::AboutToNavigateRenderFrame( 2528 void WebContentsImpl::AboutToNavigateRenderFrame(
dmazzoni 2015/01/21 18:59:03 This function is called at the right time, but (1)
nasko 2015/02/03 17:28:05 It doesn't need to be the new RFH in all cases. If
dmazzoni 2015/02/03 17:40:54 So what should I use if I want to catch both brows
nasko 2015/02/03 18:05:19 Let's step back a second and clarify why is "reloa
dmazzoni 2015/02/03 18:20:27 As soon as a navigation starts we can fire a notif
2524 RenderFrameHostImpl* render_frame_host) { 2529 RenderFrameHostImpl* render_frame_host) {
2525 // Notify observers that we will navigate in this RenderFrame. 2530 // Notify observers that we will navigate in this RenderFrame.
2526 FOR_EACH_OBSERVER( 2531 FOR_EACH_OBSERVER(
2527 WebContentsObserver, 2532 WebContentsObserver,
2528 observers_, 2533 observers_,
2529 AboutToNavigateRenderFrame(render_frame_host)); 2534 AboutToNavigateRenderFrame(render_frame_host));
2530 } 2535 }
2531 2536
2532 void WebContentsImpl::DidStartNavigationToPendingEntry( 2537 void WebContentsImpl::DidStartNavigationToPendingEntry(
2533 RenderFrameHostImpl* render_frame_host, 2538 RenderFrameHostImpl* render_frame_host,
2534 const GURL& url, 2539 const GURL& url,
2535 NavigationController::ReloadType reload_type) { 2540 NavigationController::ReloadType reload_type) {
2536 // Notify observers about navigation. 2541 // Notify observers about navigation.
2537 FOR_EACH_OBSERVER( 2542 FOR_EACH_OBSERVER(
2538 WebContentsObserver, 2543 WebContentsObserver,
2539 observers_, 2544 observers_,
2540 DidStartNavigationToPendingEntry(url, reload_type)); 2545 DidStartNavigationToPendingEntry(url, reload_type));
2546
2547 // Notify accessibility that the user is navigating away from the
2548 // current RenderFrameHost.
2549 FrameTreeNode* ftn = render_frame_host->frame_tree_node();
dmazzoni 2015/01/21 18:59:04 This is the only function that gets called early e
nasko 2015/02/03 17:28:05 Architecturally, we can't notify before commit tim
dmazzoni 2015/02/03 17:40:54 What I'm observing is that for a browser-initiated
nasko 2015/02/03 18:05:18 What you are observing is correct for this very sp
dmazzoni 2015/02/03 18:20:27 That's true. The point is that I need a notificat
2550 BrowserAccessibilityManager* manager =
2551 ftn->current_frame_host()->browser_accessibility_manager();
2552 if (manager) {
2553 bool is_reload = reload_type != NavigationController::NO_RELOAD;
2554 manager->UserIsNavigatingAway(is_reload);
2555 }
2541 } 2556 }
2542 2557
2543 void WebContentsImpl::RequestOpenURL(RenderFrameHostImpl* render_frame_host, 2558 void WebContentsImpl::RequestOpenURL(RenderFrameHostImpl* render_frame_host,
2544 const OpenURLParams& params) { 2559 const OpenURLParams& params) {
2545 // OpenURL can blow away the source RFH. Use the process/frame routing ID as a 2560 // OpenURL can blow away the source RFH. Use the process/frame routing ID as a
2546 // weak pointer of sorts. 2561 // weak pointer of sorts.
2547 const int32_t process_id = render_frame_host->GetProcess()->GetID(); 2562 const int32_t process_id = render_frame_host->GetProcess()->GetID();
2548 const int32_t frame_id = render_frame_host->GetRoutingID(); 2563 const int32_t frame_id = render_frame_host->GetRoutingID();
2549 2564
2550 WebContents* new_contents = OpenURL(params); 2565 WebContents* new_contents = OpenURL(params);
(...skipping 18 matching lines...) Expand all
2569 2584
2570 void WebContentsImpl::DidCommitProvisionalLoad( 2585 void WebContentsImpl::DidCommitProvisionalLoad(
2571 RenderFrameHostImpl* render_frame_host, 2586 RenderFrameHostImpl* render_frame_host,
2572 const GURL& url, 2587 const GURL& url,
2573 ui::PageTransition transition_type) { 2588 ui::PageTransition transition_type) {
2574 // Notify observers about the commit of the provisional load. 2589 // Notify observers about the commit of the provisional load.
2575 FOR_EACH_OBSERVER(WebContentsObserver, 2590 FOR_EACH_OBSERVER(WebContentsObserver,
2576 observers_, 2591 observers_,
2577 DidCommitProvisionalLoadForFrame( 2592 DidCommitProvisionalLoadForFrame(
2578 render_frame_host, url, transition_type)); 2593 render_frame_host, url, transition_type));
2594
2595 BrowserAccessibilityManager* manager =
2596 render_frame_host->browser_accessibility_manager();
2597 if (manager)
2598 manager->NavigationSucceeded();
2579 } 2599 }
2580 2600
2581 void WebContentsImpl::DidNavigateMainFramePreCommit( 2601 void WebContentsImpl::DidNavigateMainFramePreCommit(
2582 bool navigation_is_within_page) { 2602 bool navigation_is_within_page) {
2583 // Ensure fullscreen mode is exited before committing the navigation to a 2603 // Ensure fullscreen mode is exited before committing the navigation to a
2584 // different page. The next page will not start out assuming it is in 2604 // different page. The next page will not start out assuming it is in
2585 // fullscreen mode. 2605 // fullscreen mode.
2586 if (navigation_is_within_page) { 2606 if (navigation_is_within_page) {
2587 // No page change? Then, the renderer and browser can remain in fullscreen. 2607 // No page change? Then, the renderer and browser can remain in fullscreen.
2588 return; 2608 return;
(...skipping 1818 matching lines...) Expand 10 before | Expand all | Expand 10 after
4407 node->render_manager()->ResumeResponseDeferredAtStart(); 4427 node->render_manager()->ResumeResponseDeferredAtStart();
4408 } 4428 }
4409 4429
4410 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4430 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4411 force_disable_overscroll_content_ = force_disable; 4431 force_disable_overscroll_content_ = force_disable;
4412 if (view_) 4432 if (view_)
4413 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4433 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4414 } 4434 }
4415 4435
4416 } // namespace content 4436 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698