| OLD | NEW |
| 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_NAVIGATION_ENTRY_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_ENTRY_IMPL_H_ |
| 6 #define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_ENTRY_IMPL_H_ | 6 #define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_ENTRY_IMPL_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 // Returns whether this TreeNode corresponds to |frame_tree_node|. If this | 42 // Returns whether this TreeNode corresponds to |frame_tree_node|. If this |
| 43 // is called on the root TreeNode, then |is_root_tree_node| should be true | 43 // is called on the root TreeNode, then |is_root_tree_node| should be true |
| 44 // and we only check if |frame_tree_node| is the main frame. Otherwise, we | 44 // and we only check if |frame_tree_node| is the main frame. Otherwise, we |
| 45 // check if the unique name matches. | 45 // check if the unique name matches. |
| 46 bool MatchesFrame(FrameTreeNode* frame_tree_node, | 46 bool MatchesFrame(FrameTreeNode* frame_tree_node, |
| 47 bool is_root_tree_node) const; | 47 bool is_root_tree_node) const; |
| 48 | 48 |
| 49 // Recursively makes a deep copy of TreeNode with copies of each of the | 49 // Recursively makes a deep copy of TreeNode with copies of each of the |
| 50 // FrameNavigationEntries in the subtree. Replaces the TreeNode | 50 // FrameNavigationEntries in the subtree. Replaces the TreeNode |
| 51 // corresponding to |frame_tree_node| (and all of its children) with a new | 51 // corresponding to |target_frame_tree_node|, clearing all of its children |
| 52 // TreeNode for |frame_navigation_entry|. Pass nullptr for both parameters | 52 // unless |clone_children_of_target| is true. This function omits any |
| 53 // to make a complete clone. | 53 // subframe history items that do not correspond to frames actually in the |
| 54 // current page, using |current_frame_tree_node| (if present). |
| 54 // |is_root_tree_node| indicates whether this is being called on the root | 55 // |is_root_tree_node| indicates whether this is being called on the root |
| 55 // NavigationEntryImpl::TreeNode. | 56 // NavigationEntryImpl::TreeNode. |
| 56 // TODO(creis): For --site-per-process, share FrameNavigationEntries between | 57 // TODO(creis): For --site-per-process, share FrameNavigationEntries between |
| 57 // NavigationEntries of the same tab. | 58 // NavigationEntries of the same tab. |
| 58 std::unique_ptr<TreeNode> CloneAndReplace( | 59 std::unique_ptr<TreeNode> CloneAndReplace( |
| 59 FrameTreeNode* frame_tree_node, | |
| 60 FrameNavigationEntry* frame_navigation_entry, | 60 FrameNavigationEntry* frame_navigation_entry, |
| 61 bool clone_children_of_target, |
| 62 FrameTreeNode* target_frame_tree_node, |
| 63 FrameTreeNode* current_frame_tree_node, |
| 61 bool is_root_tree_node) const; | 64 bool is_root_tree_node) const; |
| 62 | 65 |
| 63 // Ref counted pointer that keeps the FrameNavigationEntry alive as long as | 66 // Ref counted pointer that keeps the FrameNavigationEntry alive as long as |
| 64 // it is needed by this node's NavigationEntry. | 67 // it is needed by this node's NavigationEntry. |
| 65 scoped_refptr<FrameNavigationEntry> frame_entry; | 68 scoped_refptr<FrameNavigationEntry> frame_entry; |
| 66 | 69 |
| 67 // List of child TreeNodes, which will be deleted when this node is. | 70 // List of child TreeNodes, which will be deleted when this node is. |
| 68 ScopedVector<TreeNode> children; | 71 ScopedVector<TreeNode> children; |
| 69 }; | 72 }; |
| 70 | 73 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 base::string16* data) const override; | 142 base::string16* data) const override; |
| 140 void ClearExtraData(const std::string& key) override; | 143 void ClearExtraData(const std::string& key) override; |
| 141 void SetHttpStatusCode(int http_status_code) override; | 144 void SetHttpStatusCode(int http_status_code) override; |
| 142 int GetHttpStatusCode() const override; | 145 int GetHttpStatusCode() const override; |
| 143 void SetRedirectChain(const std::vector<GURL>& redirects) override; | 146 void SetRedirectChain(const std::vector<GURL>& redirects) override; |
| 144 const std::vector<GURL>& GetRedirectChain() const override; | 147 const std::vector<GURL>& GetRedirectChain() const override; |
| 145 bool IsRestored() const override; | 148 bool IsRestored() const override; |
| 146 | 149 |
| 147 // Creates a copy of this NavigationEntryImpl that can be modified | 150 // Creates a copy of this NavigationEntryImpl that can be modified |
| 148 // independently from the original. Does not copy any value that would be | 151 // independently from the original. Does not copy any value that would be |
| 149 // cleared in ResetForCommit. | 152 // cleared in ResetForCommit. Unlike |CloneAndReplace|, this does not check |
| 153 // whether the subframe history items are for frames that are still in the |
| 154 // current page. |
| 150 std::unique_ptr<NavigationEntryImpl> Clone() const; | 155 std::unique_ptr<NavigationEntryImpl> Clone() const; |
| 151 | 156 |
| 152 // Like |Clone|, but replaces the FrameNavigationEntry corresponding to | 157 // Like |Clone|, but replaces the FrameNavigationEntry corresponding to |
| 153 // |frame_tree_node| (and all its children) with |frame_entry|. | 158 // |target_frame_tree_node| with |frame_entry|, clearing all of its children |
| 159 // unless |clone_children_of_target| is true. This function omits any |
| 160 // subframe history items that do not correspond to frames actually in the |
| 161 // current page, using |root_frame_tree_node| (if present). |
| 162 // |
| 154 // TODO(creis): Once we start sharing FrameNavigationEntries between | 163 // TODO(creis): Once we start sharing FrameNavigationEntries between |
| 155 // NavigationEntryImpls, we will need to support two versions of Clone: one | 164 // NavigationEntryImpls, we will need to support two versions of Clone: one |
| 156 // that shares the existing FrameNavigationEntries (for use within the same | 165 // that shares the existing FrameNavigationEntries (for use within the same |
| 157 // tab) and one that draws them from a different pool (for use in a new tab). | 166 // tab) and one that draws them from a different pool (for use in a new tab). |
| 158 std::unique_ptr<NavigationEntryImpl> CloneAndReplace( | 167 std::unique_ptr<NavigationEntryImpl> CloneAndReplace( |
| 159 FrameTreeNode* frame_tree_node, | 168 FrameNavigationEntry* frame_entry, |
| 160 FrameNavigationEntry* frame_entry) const; | 169 bool clone_children_of_target, |
| 170 FrameTreeNode* target_frame_tree_node, |
| 171 FrameTreeNode* root_frame_tree_node) const; |
| 161 | 172 |
| 162 // Helper functions to construct NavigationParameters for a navigation to this | 173 // Helper functions to construct NavigationParameters for a navigation to this |
| 163 // NavigationEntry. | 174 // NavigationEntry. |
| 164 CommonNavigationParams ConstructCommonNavigationParams( | 175 CommonNavigationParams ConstructCommonNavigationParams( |
| 165 const FrameNavigationEntry& frame_entry, | 176 const FrameNavigationEntry& frame_entry, |
| 166 const scoped_refptr<ResourceRequestBodyImpl>& post_body, | 177 const scoped_refptr<ResourceRequestBodyImpl>& post_body, |
| 167 const GURL& dest_url, | 178 const GURL& dest_url, |
| 168 const Referrer& dest_referrer, | 179 const Referrer& dest_referrer, |
| 169 FrameMsg_Navigate_Type::Value navigation_type, | 180 FrameMsg_Navigate_Type::Value navigation_type, |
| 170 LoFiState lofi_state, | 181 LoFiState lofi_state, |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 // persisted, unless specific data is taken out/put back in at save/restore | 522 // persisted, unless specific data is taken out/put back in at save/restore |
| 512 // time (see TabNavigation for an example of this). | 523 // time (see TabNavigation for an example of this). |
| 513 std::map<std::string, base::string16> extra_data_; | 524 std::map<std::string, base::string16> extra_data_; |
| 514 | 525 |
| 515 DISALLOW_COPY_AND_ASSIGN(NavigationEntryImpl); | 526 DISALLOW_COPY_AND_ASSIGN(NavigationEntryImpl); |
| 516 }; | 527 }; |
| 517 | 528 |
| 518 } // namespace content | 529 } // namespace content |
| 519 | 530 |
| 520 #endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_ENTRY_IMPL_H_ | 531 #endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_ENTRY_IMPL_H_ |
| OLD | NEW |