Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_RENDERER_HOST_RENDER_VIEW_HOST_H_ | 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_H_ |
| 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_H_ | 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 153 // RenderViewHost. This is called when a pending RenderViewHost is created | 153 // RenderViewHost. This is called when a pending RenderViewHost is created |
| 154 // for a cross-site navigation, because we must suspend any navigations until | 154 // for a cross-site navigation, because we must suspend any navigations until |
| 155 // we hear back from the old renderer's onbeforeunload handler. Note that it | 155 // we hear back from the old renderer's onbeforeunload handler. Note that it |
| 156 // is important that only one navigation event happen after calling this | 156 // is important that only one navigation event happen after calling this |
| 157 // method with |suspend| equal to true. If |suspend| is false and there is | 157 // method with |suspend| equal to true. If |suspend| is false and there is |
| 158 // a suspended_nav_message_, this will send the message. This function | 158 // a suspended_nav_message_, this will send the message. This function |
| 159 // should only be called to toggle the state; callers should check | 159 // should only be called to toggle the state; callers should check |
| 160 // are_navigations_suspended() first. | 160 // are_navigations_suspended() first. |
| 161 void SetNavigationsSuspended(bool suspend); | 161 void SetNavigationsSuspended(bool suspend); |
| 162 | 162 |
| 163 // Clears any suspended navigation state after a cross-site navigation is | |
| 164 // canceled or suspended. This is important if we later return to this | |
| 165 // RenderViewHost. | |
| 166 void CancelSuspendedNavigations(); | |
| 167 | |
| 168 // Whether this RenderViewHost has been swapped out to be displayed by a | |
| 169 // different process. | |
| 170 bool is_swapped_out() const { return is_swapped_out_; } | |
| 171 | |
| 163 // Causes the renderer to invoke the onbeforeunload event handler. The | 172 // Causes the renderer to invoke the onbeforeunload event handler. The |
| 164 // result will be returned via ViewMsg_ShouldClose. See also ClosePage which | 173 // result will be returned via ViewMsg_ShouldClose. See also ClosePage and |
| 165 // will fire the PageUnload event. | 174 // SwapOut, which fire the PageUnload event. |
| 166 // | 175 // |
| 167 // Set bool for_cross_site_transition when this close is just for the current | 176 // Set bool for_cross_site_transition when this close is just for the current |
| 168 // RenderView in the case of a cross-site transition. False means we're | 177 // RenderView in the case of a cross-site transition. False means we're |
| 169 // closing the entire tab. | 178 // closing the entire tab. |
| 170 void FirePageBeforeUnload(bool for_cross_site_transition); | 179 void FirePageBeforeUnload(bool for_cross_site_transition); |
| 171 | 180 |
| 181 // Tells the renderer that this RenderView is being swapped out for one in a | |
| 182 // different renderer process. The renderer should preserve the Frame object | |
| 183 // until it exits (when it has no more active RenderViews). | |
| 184 // | |
| 185 // Please see ViewMsg_SwapOut_Params in view_messages.h for a description | |
| 186 // of the parameters. | |
| 187 void SwapOut(int new_render_process_host_id, int new_request_id); | |
| 188 | |
| 189 // Called by ResourceDispatcherHost after the SwapOutACK is received. | |
| 190 void OnSwapOutACK(); | |
| 191 | |
| 192 // Called to notify the RenderWidget that it has been visibly swapped out, | |
|
Matt Perry
2011/04/29 19:25:18
RenderView
Charlie Reis
2011/05/05 15:17:59
Done.
| |
| 193 // such that it is safe for the process to exit if not otherwise in use. | |
| 194 void WasSwappedOut(); | |
|
Matt Perry
2011/04/29 19:25:18
I'm a little confused on the difference between Sw
Charlie Reis
2011/05/05 15:17:59
Done.
| |
| 195 | |
| 172 // Causes the renderer to close the current page, including running its | 196 // Causes the renderer to close the current page, including running its |
| 173 // onunload event handler. A ClosePage_ACK message will be sent to the | 197 // onunload event handler. A ClosePage_ACK message will be sent to the |
| 174 // ResourceDispatcherHost when it is finished. | 198 // ResourceDispatcherHost when it is finished. |
| 175 // | 199 void ClosePage(); |
| 176 // Please see ViewMsg_ClosePage in resource_messages_internal.h for a | |
| 177 // description of the parameters. | |
| 178 void ClosePage(bool for_cross_site_transition, | |
| 179 int new_render_process_host_id, | |
| 180 int new_request_id); | |
| 181 | |
| 182 // Called by ResourceDispatcherHost after the ClosePageACK is received. | |
| 183 void OnClosePageACK(bool for_cross_site_transition); | |
| 184 | 200 |
| 185 // Close the page ignoring whether it has unload events registers. | 201 // Close the page ignoring whether it has unload events registers. |
| 186 // This is called after the beforeunload and unload events have fired | 202 // This is called after the beforeunload and unload events have fired |
| 187 // and the user has agreed to continue with closing the page. | 203 // and the user has agreed to continue with closing the page. |
| 188 void ClosePageIgnoringUnloadEvents(); | 204 void ClosePageIgnoringUnloadEvents(); |
| 189 | 205 |
| 190 // Sets whether this RenderViewHost has an outstanding cross-site request, | 206 // Sets whether this RenderViewHost has an outstanding cross-site request, |
| 191 // for which another renderer will need to run an onunload event handler. | 207 // for which another renderer will need to run an onunload event handler. |
| 192 // This is called before the first navigation event for this RenderViewHost, | 208 // This is called before the first navigation event for this RenderViewHost, |
| 193 // and again after the corresponding OnCrossSiteResponse. | 209 // and again after the corresponding OnCrossSiteResponse. |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 446 GURL* url); | 462 GURL* url); |
| 447 | 463 |
| 448 protected: | 464 protected: |
| 449 friend class RenderViewHostObserver; | 465 friend class RenderViewHostObserver; |
| 450 | 466 |
| 451 // Add and remove observers for filtering IPC messages. Clients must be sure | 467 // Add and remove observers for filtering IPC messages. Clients must be sure |
| 452 // to remove the observer before they go away. | 468 // to remove the observer before they go away. |
| 453 void AddObserver(RenderViewHostObserver* observer); | 469 void AddObserver(RenderViewHostObserver* observer); |
| 454 void RemoveObserver(RenderViewHostObserver* observer); | 470 void RemoveObserver(RenderViewHostObserver* observer); |
| 455 | 471 |
| 472 // Filter out most IPC messages while swapped out, except for messages needed | |
| 473 // to preserve consistent browser and renderer state. | |
| 474 bool CanHandleWhileSwappedOut(const IPC::Message& msg); | |
| 475 | |
| 456 // RenderWidgetHost protected overrides. | 476 // RenderWidgetHost protected overrides. |
| 457 virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, | 477 virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, |
| 458 bool* is_keyboard_shortcut); | 478 bool* is_keyboard_shortcut); |
| 459 virtual void UnhandledKeyboardEvent(const NativeWebKeyboardEvent& event); | 479 virtual void UnhandledKeyboardEvent(const NativeWebKeyboardEvent& event); |
| 460 virtual void OnUserGesture(); | 480 virtual void OnUserGesture(); |
| 461 virtual void NotifyRendererUnresponsive(); | 481 virtual void NotifyRendererUnresponsive(); |
| 462 virtual void NotifyRendererResponsive(); | 482 virtual void NotifyRendererResponsive(); |
| 463 virtual void OnMsgFocusedNodeChanged(bool is_editable_node); | 483 virtual void OnMsgFocusedNodeChanged(bool is_editable_node); |
| 464 virtual void OnMsgFocus(); | 484 virtual void OnMsgFocus(); |
| 465 virtual void OnMsgBlur(); | 485 virtual void OnMsgBlur(); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 512 const gfx::Point& image_offset); | 532 const gfx::Point& image_offset); |
| 513 void OnUpdateDragCursor(WebKit::WebDragOperation drag_operation); | 533 void OnUpdateDragCursor(WebKit::WebDragOperation drag_operation); |
| 514 void OnTakeFocus(bool reverse); | 534 void OnTakeFocus(bool reverse); |
| 515 void OnAddMessageToConsole(int32 level, | 535 void OnAddMessageToConsole(int32 level, |
| 516 const std::wstring& message, | 536 const std::wstring& message, |
| 517 int32 line_no, | 537 int32 line_no, |
| 518 const std::wstring& source_id); | 538 const std::wstring& source_id); |
| 519 void OnUpdateInspectorSetting(const std::string& key, | 539 void OnUpdateInspectorSetting(const std::string& key, |
| 520 const std::string& value); | 540 const std::string& value); |
| 521 void OnMsgShouldCloseACK(bool proceed); | 541 void OnMsgShouldCloseACK(bool proceed); |
| 542 void OnMsgClosePageACK(); | |
| 522 | 543 |
| 523 void OnAccessibilityNotifications( | 544 void OnAccessibilityNotifications( |
| 524 const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params); | 545 const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params); |
| 525 void OnCSSInserted(); | 546 void OnCSSInserted(); |
| 526 void OnContentBlocked(ContentSettingsType type, | 547 void OnContentBlocked(ContentSettingsType type, |
| 527 const std::string& resource_identifier); | 548 const std::string& resource_identifier); |
| 528 void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy); | 549 void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy); |
| 529 void OnWebDatabaseAccessed(const GURL& url, | 550 void OnWebDatabaseAccessed(const GURL& url, |
| 530 const string16& name, | 551 const string16& name, |
| 531 const string16& display_name, | 552 const string16& display_name, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 574 // request, until we hear back from the onbeforeunload handler of the old | 595 // request, until we hear back from the onbeforeunload handler of the old |
| 575 // RenderViewHost. | 596 // RenderViewHost. |
| 576 bool navigations_suspended_; | 597 bool navigations_suspended_; |
| 577 | 598 |
| 578 // We only buffer a suspended navigation message while we a pending RVH for a | 599 // We only buffer a suspended navigation message while we a pending RVH for a |
| 579 // TabContents. There will only ever be one suspended navigation, because | 600 // TabContents. There will only ever be one suspended navigation, because |
| 580 // TabContents will destroy the pending RVH and create a new one if a second | 601 // TabContents will destroy the pending RVH and create a new one if a second |
| 581 // navigation occurs. | 602 // navigation occurs. |
| 582 scoped_ptr<ViewMsg_Navigate> suspended_nav_message_; | 603 scoped_ptr<ViewMsg_Navigate> suspended_nav_message_; |
| 583 | 604 |
| 605 // Whether this RenderViewHost is currently swapped out, such that the view is | |
| 606 // being rendered by another process. | |
| 607 bool is_swapped_out_; | |
| 608 | |
| 584 // If we were asked to RunModal, then this will hold the reply_msg that we | 609 // If we were asked to RunModal, then this will hold the reply_msg that we |
| 585 // must return to the renderer to unblock it. | 610 // must return to the renderer to unblock it. |
| 586 IPC::Message* run_modal_reply_msg_; | 611 IPC::Message* run_modal_reply_msg_; |
| 587 | 612 |
| 588 // Set to true when there is a pending ViewMsg_ShouldClose message. This | 613 // Set to true when there is a pending ViewMsg_ShouldClose message. This |
| 589 // ensures we don't spam the renderer with multiple beforeunload requests. | 614 // ensures we don't spam the renderer with multiple beforeunload requests. |
| 590 // When either this value or is_waiting_for_unload_ack_ is true, the value of | 615 // When either this value or is_waiting_for_unload_ack_ is true, the value of |
| 591 // unload_ack_is_for_cross_site_transition_ indicates whether this is for a | 616 // unload_ack_is_for_cross_site_transition_ indicates whether this is for a |
| 592 // cross-site transition or a tab close attempt. | 617 // cross-site transition or a tab close attempt. |
| 593 bool is_waiting_for_beforeunload_ack_; | 618 bool is_waiting_for_beforeunload_ack_; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 626 // The enabled/disabled states of various commands. | 651 // The enabled/disabled states of various commands. |
| 627 std::map<RenderViewCommand, CommandState> command_states_; | 652 std::map<RenderViewCommand, CommandState> command_states_; |
| 628 | 653 |
| 629 // A list of observers that filter messages. Weak references. | 654 // A list of observers that filter messages. Weak references. |
| 630 ObserverList<RenderViewHostObserver> observers_; | 655 ObserverList<RenderViewHostObserver> observers_; |
| 631 | 656 |
| 632 DISALLOW_COPY_AND_ASSIGN(RenderViewHost); | 657 DISALLOW_COPY_AND_ASSIGN(RenderViewHost); |
| 633 }; | 658 }; |
| 634 | 659 |
| 635 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_H_ | 660 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_H_ |
| OLD | NEW |