Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 /* | 5 /* |
| 6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
| 10 * | 10 * |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 28 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| 31 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 31 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 34 */ | 34 */ |
| 35 | 35 |
| 36 #include "content/renderer/history_entry.h" | 36 #include "content/renderer/history_entry.h" |
| 37 | 37 |
| 38 #include <deque> | |
| 39 | |
| 40 #include "content/renderer/render_frame_impl.h" | 38 #include "content/renderer/render_frame_impl.h" |
| 41 #include "content/renderer/render_view_impl.h" | 39 #include "content/renderer/render_view_impl.h" |
| 42 #include "third_party/WebKit/public/web/WebFrame.h" | 40 #include "third_party/WebKit/public/web/WebFrame.h" |
| 43 | 41 |
| 44 using blink::WebFrame; | 42 using blink::WebFrame; |
| 45 using blink::WebHistoryItem; | 43 using blink::WebHistoryItem; |
| 46 | 44 |
| 47 namespace content { | 45 namespace content { |
| 48 | 46 |
| 49 HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::AddChild( | 47 HistoryEntry::HistoryNode* HistoryEntry::HistoryNode::AddChild( |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 new_item, | 81 new_item, |
| 84 clone_children_of_target, | 82 clone_children_of_target, |
| 85 target_frame, | 83 target_frame, |
| 86 child_render_frame); | 84 child_render_frame); |
| 87 new_history_node->children_->push_back(new_child_node); | 85 new_history_node->children_->push_back(new_child_node); |
| 88 } | 86 } |
| 89 } | 87 } |
| 90 return new_history_node; | 88 return new_history_node; |
| 91 } | 89 } |
| 92 | 90 |
| 91 void HistoryEntry::HistoryNode::set_item(const WebHistoryItem& item) { | |
| 92 entry_->unique_names_to_items_[item.target().utf8()] = this; | |
|
Nate Chapin
2014/04/25 21:49:21
When a HistoryNode is created during deserializati
Charlie Reis
2014/04/28 16:29:00
I'm not sure I follow this, but it also sounds lik
Nate Chapin
2014/04/28 17:31:54
Done.
| |
| 93 item_ = item; | |
| 94 } | |
| 95 | |
| 93 HistoryEntry::HistoryNode::HistoryNode(HistoryEntry* entry, | 96 HistoryEntry::HistoryNode::HistoryNode(HistoryEntry* entry, |
| 94 const WebHistoryItem& item, | 97 const WebHistoryItem& item, |
| 95 int64_t frame_id) | 98 int64_t frame_id) |
| 96 : entry_(entry), item_(item) { | 99 : entry_(entry), item_(item) { |
| 97 if (frame_id != kInvalidFrameRoutingID) | 100 if (frame_id != kInvalidFrameRoutingID) |
| 98 entry_->frames_to_items_[frame_id] = this; | 101 entry_->frames_to_items_[frame_id] = this; |
| 99 entry_->unique_names_to_items_[item.target().utf8()] = this; | 102 if (!item.isNull()) |
| 103 entry_->unique_names_to_items_[item.target().utf8()] = this; | |
| 100 children_.reset(new ScopedVector<HistoryNode>); | 104 children_.reset(new ScopedVector<HistoryNode>); |
| 101 } | 105 } |
| 102 | 106 |
| 103 HistoryEntry::HistoryNode::~HistoryNode() { | 107 HistoryEntry::HistoryNode::~HistoryNode() { |
| 104 } | 108 } |
| 105 | 109 |
| 106 void HistoryEntry::HistoryNode::RemoveChildren() { | 110 void HistoryEntry::HistoryNode::RemoveChildren() { |
| 107 // TODO(japhet): This is inefficient. Figure out a cleaner way to ensure | 111 // TODO(japhet): This is inefficient. Figure out a cleaner way to ensure |
| 108 // this HistoryNode isn't cached anywhere. | 112 // this HistoryNode isn't cached anywhere. |
| 109 std::vector<uint64_t> frames_to_remove; | 113 std::vector<uint64_t> frames_to_remove; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 168 return unique_names_to_items_[frame->GetWebFrame()->uniqueName().utf8()]; | 172 return unique_names_to_items_[frame->GetWebFrame()->uniqueName().utf8()]; |
| 169 } | 173 } |
| 170 | 174 |
| 171 WebHistoryItem HistoryEntry::GetItemForFrame(RenderFrameImpl* frame) { | 175 WebHistoryItem HistoryEntry::GetItemForFrame(RenderFrameImpl* frame) { |
| 172 if (HistoryNode* history_node = GetHistoryNodeForFrame(frame)) | 176 if (HistoryNode* history_node = GetHistoryNodeForFrame(frame)) |
| 173 return history_node->item(); | 177 return history_node->item(); |
| 174 return WebHistoryItem(); | 178 return WebHistoryItem(); |
| 175 } | 179 } |
| 176 | 180 |
| 177 } // namespace content | 181 } // namespace content |
| OLD | NEW |