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

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.h

Issue 625443002: Reset accessibility if it gets out of sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed flakiness Created 6 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 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 5 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 STATE_PENDING_SWAP_OUT, 86 STATE_PENDING_SWAP_OUT,
87 // The RFH is swapped out and stored inside a RenderFrameProxyHost, being 87 // The RFH is swapped out and stored inside a RenderFrameProxyHost, being
88 // used as a placeholder to allow cross-process communication. Only main 88 // used as a placeholder to allow cross-process communication. Only main
89 // frames can enter this state. 89 // frames can enter this state.
90 STATE_SWAPPED_OUT, 90 STATE_SWAPPED_OUT,
91 }; 91 };
92 // Helper function to determine whether the RFH state should contribute to the 92 // Helper function to determine whether the RFH state should contribute to the
93 // number of active frames of a SiteInstance or not. 93 // number of active frames of a SiteInstance or not.
94 static bool IsRFHStateActive(RenderFrameHostImplState rfh_state); 94 static bool IsRFHStateActive(RenderFrameHostImplState rfh_state);
95 95
96 // An accessibility reset is only allowed to prevent very rare corner cases
97 // or race conditions where the browser and renderer get out of sync. If
98 // this happens more than this many times, kill the renderer.
99 static const int kMaxAccessibilityResets = 5;
100
96 static RenderFrameHostImpl* FromID(int process_id, int routing_id); 101 static RenderFrameHostImpl* FromID(int process_id, int routing_id);
97 102
98 ~RenderFrameHostImpl() override; 103 ~RenderFrameHostImpl() override;
99 104
100 // RenderFrameHost 105 // RenderFrameHost
101 int GetRoutingID() override; 106 int GetRoutingID() override;
102 SiteInstanceImpl* GetSiteInstance() override; 107 SiteInstanceImpl* GetSiteInstance() override;
103 RenderProcessHost* GetProcess() override; 108 RenderProcessHost* GetProcess() override;
104 RenderFrameHost* GetParent() override; 109 RenderFrameHost* GetParent() override;
105 const std::string& GetFrameName() override; 110 const std::string& GetFrameName() override;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 // Access the BrowserAccessibilityManager if it already exists. 332 // Access the BrowserAccessibilityManager if it already exists.
328 BrowserAccessibilityManager* browser_accessibility_manager() const { 333 BrowserAccessibilityManager* browser_accessibility_manager() const {
329 return browser_accessibility_manager_.get(); 334 return browser_accessibility_manager_.get();
330 } 335 }
331 336
332 // If accessibility is enabled, get the BrowserAccessibilityManager for 337 // If accessibility is enabled, get the BrowserAccessibilityManager for
333 // this frame, or create one if it doesn't exist yet, otherwise return 338 // this frame, or create one if it doesn't exist yet, otherwise return
334 // NULL. 339 // NULL.
335 BrowserAccessibilityManager* GetOrCreateBrowserAccessibilityManager(); 340 BrowserAccessibilityManager* GetOrCreateBrowserAccessibilityManager();
336 341
342 void set_no_create_browser_accessibility_manager_for_testing(bool flag) {
343 no_create_browser_accessibility_manager_for_testing_ = flag;
344 }
345
337 #if defined(OS_WIN) 346 #if defined(OS_WIN)
338 void SetParentNativeViewAccessible( 347 void SetParentNativeViewAccessible(
339 gfx::NativeViewAccessible accessible_parent); 348 gfx::NativeViewAccessible accessible_parent);
340 gfx::NativeViewAccessible GetParentNativeViewAccessible() const; 349 gfx::NativeViewAccessible GetParentNativeViewAccessible() const;
341 #elif defined(OS_MACOSX) 350 #elif defined(OS_MACOSX)
342 // Select popup menu related methods (for external popup menus). 351 // Select popup menu related methods (for external popup menus).
343 void DidSelectPopupMenuItem(int selected_index); 352 void DidSelectPopupMenuItem(int selected_index);
344 void DidCancelPopupMenu(); 353 void DidCancelPopupMenu();
345 #elif defined(OS_ANDROID) 354 #elif defined(OS_ANDROID)
346 void DidSelectPopupMenuItems(const std::vector<int>& selected_indices); 355 void DidSelectPopupMenuItems(const std::vector<int>& selected_indices);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 void OnDidAccessInitialDocument(); 428 void OnDidAccessInitialDocument();
420 void OnDidDisownOpener(); 429 void OnDidDisownOpener();
421 void OnDidAssignPageId(int32 page_id); 430 void OnDidAssignPageId(int32 page_id);
422 void OnUpdateTitle(int32 page_id, 431 void OnUpdateTitle(int32 page_id,
423 const base::string16& title, 432 const base::string16& title,
424 blink::WebTextDirection title_direction); 433 blink::WebTextDirection title_direction);
425 void OnUpdateEncoding(const std::string& encoding); 434 void OnUpdateEncoding(const std::string& encoding);
426 void OnBeginNavigation(const FrameHostMsg_BeginNavigation_Params& params, 435 void OnBeginNavigation(const FrameHostMsg_BeginNavigation_Params& params,
427 const CommonNavigationParams& common_params); 436 const CommonNavigationParams& common_params);
428 void OnAccessibilityEvents( 437 void OnAccessibilityEvents(
429 const std::vector<AccessibilityHostMsg_EventParams>& params); 438 const std::vector<AccessibilityHostMsg_EventParams>& params,
439 int reset_token);
430 void OnAccessibilityLocationChanges( 440 void OnAccessibilityLocationChanges(
431 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params); 441 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params);
432 442
433 #if defined(OS_MACOSX) || defined(OS_ANDROID) 443 #if defined(OS_MACOSX) || defined(OS_ANDROID)
434 void OnShowPopup(const FrameHostMsg_ShowPopup_Params& params); 444 void OnShowPopup(const FrameHostMsg_ShowPopup_Params& params);
435 void OnHidePopup(); 445 void OnHidePopup();
436 #endif 446 #endif
437 447
438 // Updates the state of this RenderFrameHost and clears any waiting state 448 // Updates the state of this RenderFrameHost and clears any waiting state
439 // that is no longer relevant. 449 // that is no longer relevant.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 // long to execute, depending on the number of active frames in the 557 // long to execute, depending on the number of active frames in the
548 // SiteInstance. 558 // SiteInstance.
549 scoped_ptr<TimeoutMonitor> swapout_event_monitor_timeout_; 559 scoped_ptr<TimeoutMonitor> swapout_event_monitor_timeout_;
550 560
551 ServiceRegistryImpl service_registry_; 561 ServiceRegistryImpl service_registry_;
552 562
553 #if defined(OS_ANDROID) 563 #if defined(OS_ANDROID)
554 scoped_ptr<ServiceRegistryAndroid> service_registry_android_; 564 scoped_ptr<ServiceRegistryAndroid> service_registry_android_;
555 #endif 565 #endif
556 566
567 // The object managing the accessibility tree for this frame.
557 scoped_ptr<BrowserAccessibilityManager> browser_accessibility_manager_; 568 scoped_ptr<BrowserAccessibilityManager> browser_accessibility_manager_;
558 569
570 // This is nonzero if we sent an accessibility reset to the renderer and
571 // we're waiting for an IPC containing this reset token (sequentially
572 // assigned) and a complete replacement accessibility tree.
573 int accessibility_reset_token_;
574
575 // A count of the number of times we needed to reset accessibility, so
576 // we don't keep trying to reset forever.
577 int accessibility_reset_count_;
578
559 // Callback when an event is received, for testing. 579 // Callback when an event is received, for testing.
560 base::Callback<void(ui::AXEvent, int)> accessibility_testing_callback_; 580 base::Callback<void(ui::AXEvent, int)> accessibility_testing_callback_;
561 // The most recently received accessibility tree - for testing only. 581 // The most recently received accessibility tree - for testing only.
562 scoped_ptr<ui::AXTree> ax_tree_for_testing_; 582 scoped_ptr<ui::AXTree> ax_tree_for_testing_;
583 // Flag to not create a BrowserAccessibilityManager, for testing. If one
584 // already exists it will still be used.
585 bool no_create_browser_accessibility_manager_for_testing_;
563 586
564 // PlzNavigate: Owns the stream used in navigations to store the body of the 587 // PlzNavigate: Owns the stream used in navigations to store the body of the
565 // response once it has started. 588 // response once it has started.
566 scoped_ptr<StreamHandle> stream_handle_; 589 scoped_ptr<StreamHandle> stream_handle_;
567 590
568 // NOTE: This must be the last member. 591 // NOTE: This must be the last member.
569 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; 592 base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_;
570 593
571 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); 594 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl);
572 }; 595 };
573 596
574 } // namespace content 597 } // namespace content
575 598
576 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_ 599 #endif // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698