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

Side by Side Diff: content/browser/frame_map.cc

Issue 8760024: Cross-process postMessage (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Some cleanup Created 9 years 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/browser/frame_map.h"
6
7 #include "base/logging.h"
8 #include "content/browser/content_frame.h"
9 #include "content/browser/renderer_host/render_view_host.h"
10 #include "content/common/view_messages.h"
11
12 namespace content {
13
14 FrameMap::FrameMap()
15 : next_frame_id_(0) {
16 }
17
18 FrameMap::~FrameMap() {
19 }
20
21 int64 FrameMap::AllocateFrameId() {
22 return ++next_frame_id_;
23 }
24
25 ContentFrame* FrameMap::InitializeFrame(int64 frame_id,
26 bool is_top_level,
27 TabContents& tab_contents,
28 ContentFrame* opener) {
29 ContentFrame* frame = new ContentFrame(frame_id, is_top_level,
30 tab_contents, opener);
31 DCHECK(frame);
jam 2011/12/22 20:06:53 nit: we avoid dchecks on pointers before using the
32 frame_id_map_.insert(
33 std::pair<int64, ContentFrame*>(frame->id(), frame));
awong 2011/12/21 01:56:07 std::make_pair(frame->id(), frame)
34 return frame;
35 }
36
37 ContentFrame* FrameMap::FindFrame(int64 id) {
awong 2011/12/21 01:56:07 if you lookup a missing ID, this will segfault. Is
38 return frame_id_map_[id];
39 }
40
41 ContentFrame *FrameMap::FindRendererFrame(int render_process_host_id,
42 int64 frame_id) {
43 ContentFrame::WebKitFrameIdTuple webkitFrameId(
44 render_process_host_id, -1, frame_id);
45
46 WebKitFrameIdMap::iterator iter = webkit_frame_id_map_.find(webkitFrameId);
47 if (iter != webkit_frame_id_map_.end())
48 return iter->second;
49 else
50 return NULL;
51 }
52
53 ContentFrame* FrameMap::FindTopLevelFrame(int process_id, int route_id) {
54 // TODO(supersat): Make this significantly less hacky
55 FrameIdMap::iterator iter;
56 for (iter = frame_id_map_.begin(); iter != frame_id_map_.end(); iter++) {
57 ContentFrame* iterFrame = (*iter).second;
58 if (iterFrame->current_process_host_id() == process_id &&
59 iterFrame->current_route_id() == route_id &&
60 iterFrame->is_top_level()) {
61 return iterFrame;
62 }
63 }
64
65 return 0;
awong 2011/12/21 01:06:38 NULL.
66 }
67
68 void FrameMap::UpdateFrame(ContentFrame* frame,
69 int render_process_host_id,
70 int route_id,
71 int64 frame_id) {
72 DLOG(WARNING) << "Calling UpdateFrame: " <<
73 render_process_host_id << ", " << route_id << ", " <<
74 frame_id;
75
76 DCHECK(frame);
awong 2011/12/21 01:56:07 Should this be a CHECK()? If this is a production
77 ContentFrame::WebKitFrameIdTuple webkitFrameId(
78 render_process_host_id, route_id, frame_id);
79 frame->current_webkit_frame_ = webkitFrameId;
80 webkit_frame_id_map_.insert(
81 std::pair<ContentFrame::WebKitFrameIdTuple,
82 ContentFrame*>(webkitFrameId, frame));
83 }
84
85 // TODO(supersat): This method might not be needed after all.
86 void FrameMap::AddSwappedOutRendererToFrame(ContentFrame* frame,
87 int render_process_host_id,
88 int route_id,
89 int64 frame_id) {
90 DLOG(WARNING) << "Calling AddSwappedOutRendererToFrame: " <<
91 frame->id() << ", " <<
92 render_process_host_id << ", " << route_id << ", " <<
93 frame_id;
94 ContentFrame::WebKitFrameIdTuple webkitFrameId(
95 render_process_host_id, route_id, frame_id);
96 webkit_frame_id_map_.insert(
97 std::pair<ContentFrame::WebKitFrameIdTuple,
awong 2011/12/21 01:56:07 make_pair
98 ContentFrame*>(webkitFrameId, frame));
99 }
100
101 void FrameMap::RemoveFrame(ContentFrame* frame) {
102 DLOG(WARNING) << "Calling RemoveFrame, id = " << frame->id();
103 // TODO(supersat): Remove child frames when they're supported
104 frame_id_map_.erase(frame->id());
105 const std::list<ContentFrame::WebKitFrameIdTuple>& webkit_frames =
106 frame->all_webkit_frames();
107 std::list<ContentFrame::WebKitFrameIdTuple>::const_iterator iter;
awong 2011/12/21 01:56:07 Scope this in the for loop?
108 for (iter = webkit_frames.begin(); iter != webkit_frames.end(); iter++) {
109 webkit_frame_id_map_.erase(*iter);
110 }
111 }
112
113 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698