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

Side by Side Diff: content/browser/frame_host/navigation_entry_impl.cc

Issue 1407853005: OOPIF: Add frame_unique_name to FrameNavigationEntry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: const ref Created 5 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
« no previous file with comments | « content/browser/frame_host/navigation_entry_impl.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "content/browser/frame_host/navigation_entry_impl.h" 5 #include "content/browser/frame_host/navigation_entry_impl.h"
6 6
7 #include <queue> 7 #include <queue>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 NavigationEntryImpl::NavigationEntryImpl(SiteInstanceImpl* instance, 97 NavigationEntryImpl::NavigationEntryImpl(SiteInstanceImpl* instance,
98 int page_id, 98 int page_id,
99 const GURL& url, 99 const GURL& url,
100 const Referrer& referrer, 100 const Referrer& referrer,
101 const base::string16& title, 101 const base::string16& title,
102 ui::PageTransition transition_type, 102 ui::PageTransition transition_type,
103 bool is_renderer_initiated) 103 bool is_renderer_initiated)
104 : frame_tree_(new TreeNode( 104 : frame_tree_(new TreeNode(
105 new FrameNavigationEntry(-1, -1, -1, instance, url, referrer))), 105 new FrameNavigationEntry(-1, "", -1, -1, instance, url, referrer))),
106 unique_id_(GetUniqueIDInConstructor()), 106 unique_id_(GetUniqueIDInConstructor()),
107 bindings_(kInvalidBindings), 107 bindings_(kInvalidBindings),
108 page_type_(PAGE_TYPE_NORMAL), 108 page_type_(PAGE_TYPE_NORMAL),
109 update_virtual_url_with_url_(false), 109 update_virtual_url_with_url_(false),
110 title_(title), 110 title_(title),
111 page_id_(page_id), 111 page_id_(page_id),
112 transition_type_(transition_type), 112 transition_type_(transition_type),
113 has_post_data_(false), 113 has_post_data_(false),
114 post_id_(-1), 114 post_id_(-1),
115 restore_type_(RESTORE_NONE), 115 restore_type_(RESTORE_NONE),
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 set_should_clear_history_list(false); 540 set_should_clear_history_list(false);
541 set_frame_tree_node_id(-1); 541 set_frame_tree_node_id(-1);
542 542
543 #if defined(OS_ANDROID) 543 #if defined(OS_ANDROID)
544 // Reset the time stamp so that the metrics are not reported if this entry is 544 // Reset the time stamp so that the metrics are not reported if this entry is
545 // loaded again in the future. 545 // loaded again in the future.
546 set_intent_received_timestamp(base::TimeTicks()); 546 set_intent_received_timestamp(base::TimeTicks());
547 #endif 547 #endif
548 } 548 }
549 549
550 void NavigationEntryImpl::AddOrUpdateFrameEntry(FrameTreeNode* frame_tree_node, 550 void NavigationEntryImpl::AddOrUpdateFrameEntry(
551 int64 item_sequence_number, 551 FrameTreeNode* frame_tree_node,
552 int64 document_sequence_number, 552 const std::string& frame_unique_name,
553 SiteInstanceImpl* site_instance, 553 int64 item_sequence_number,
554 const GURL& url, 554 int64 document_sequence_number,
555 const Referrer& referrer, 555 SiteInstanceImpl* site_instance,
556 const PageState& page_state) { 556 const GURL& url,
557 const Referrer& referrer,
558 const PageState& page_state) {
557 // We should already have a TreeNode for the parent node by the time this node 559 // We should already have a TreeNode for the parent node by the time this node
558 // commits. Find it first. 560 // commits. Find it first.
559 DCHECK(frame_tree_node->parent()); 561 DCHECK(frame_tree_node->parent());
560 NavigationEntryImpl::TreeNode* parent_node = 562 NavigationEntryImpl::TreeNode* parent_node =
561 FindFrameEntry(frame_tree_node->parent()); 563 FindFrameEntry(frame_tree_node->parent());
562 if (!parent_node) { 564 if (!parent_node) {
563 // The renderer should not send a commit for a subframe before its parent. 565 // The renderer should not send a commit for a subframe before its parent.
564 // TODO(creis): Kill the renderer if we get here. 566 // TODO(creis): Kill the renderer if we get here.
565 return; 567 return;
566 } 568 }
567 569
568 // Now check whether we have a TreeNode for the node itself. 570 // Now check whether we have a TreeNode for the node itself.
569 int frame_tree_node_id = frame_tree_node->frame_tree_node_id(); 571 int frame_tree_node_id = frame_tree_node->frame_tree_node_id();
570 for (TreeNode* child : parent_node->children) { 572 for (TreeNode* child : parent_node->children) {
571 if (child->frame_entry->frame_tree_node_id() == frame_tree_node_id) { 573 if (child->frame_entry->frame_tree_node_id() == frame_tree_node_id) {
572 // Update the existing FrameNavigationEntry (e.g., for replaceState). 574 // Update the existing FrameNavigationEntry (e.g., for replaceState).
573 child->frame_entry->UpdateEntry(item_sequence_number, 575 child->frame_entry->UpdateEntry(frame_unique_name, item_sequence_number,
574 document_sequence_number, site_instance, 576 document_sequence_number, site_instance,
575 url, referrer, page_state); 577 url, referrer, page_state);
576 return; 578 return;
577 } 579 }
578 } 580 }
579 581
580 // No entry exists yet, so create a new one. 582 // No entry exists yet, so create a new one.
581 // Unordered list, since we expect to look up entries by frame sequence number 583 // Unordered list, since we expect to look up entries by frame sequence number
582 // or unique name. 584 // or unique name.
583 FrameNavigationEntry* frame_entry = new FrameNavigationEntry( 585 FrameNavigationEntry* frame_entry = new FrameNavigationEntry(
584 frame_tree_node_id, item_sequence_number, document_sequence_number, 586 frame_tree_node_id, frame_unique_name, item_sequence_number,
585 site_instance, url, referrer); 587 document_sequence_number, site_instance, url, referrer);
586 frame_entry->set_page_state(page_state); 588 frame_entry->set_page_state(page_state);
587 parent_node->children.push_back( 589 parent_node->children.push_back(
588 new NavigationEntryImpl::TreeNode(frame_entry)); 590 new NavigationEntryImpl::TreeNode(frame_entry));
589 } 591 }
590 592
591 FrameNavigationEntry* NavigationEntryImpl::GetFrameEntry( 593 FrameNavigationEntry* NavigationEntryImpl::GetFrameEntry(
592 FrameTreeNode* frame_tree_node) const { 594 FrameTreeNode* frame_tree_node) const {
593 NavigationEntryImpl::TreeNode* tree_node = FindFrameEntry(frame_tree_node); 595 NavigationEntryImpl::TreeNode* tree_node = FindFrameEntry(frame_tree_node);
594 return tree_node ? tree_node->frame_entry.get() : nullptr; 596 return tree_node ? tree_node->frame_entry.get() : nullptr;
595 } 597 }
(...skipping 24 matching lines...) Expand all
620 return node; 622 return node;
621 } 623 }
622 // Enqueue any children and keep looking. 624 // Enqueue any children and keep looking.
623 for (auto& child : node->children) 625 for (auto& child : node->children)
624 work_queue.push(child); 626 work_queue.push(child);
625 } 627 }
626 return nullptr; 628 return nullptr;
627 } 629 }
628 630
629 } // namespace content 631 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_entry_impl.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698