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

Side by Side Diff: chrome/browser/extensions/api/web_navigation/frame_navigation_state.cc

Issue 10805066: Pass the render process id to the FrameNavigationState. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h" 5 #include "chrome/browser/extensions/api/web_navigation/frame_navigation_state.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/common/url_constants.h" 8 #include "chrome/common/url_constants.h"
9 9
10 namespace extensions { 10 namespace extensions {
11 11
12 namespace { 12 namespace {
13 13
14 // URL schemes for which we'll send events. 14 // URL schemes for which we'll send events.
15 const char* kValidSchemes[] = { 15 const char* kValidSchemes[] = {
16 chrome::kHttpScheme, 16 chrome::kHttpScheme,
17 chrome::kHttpsScheme, 17 chrome::kHttpsScheme,
18 chrome::kFileScheme, 18 chrome::kFileScheme,
19 chrome::kFtpScheme, 19 chrome::kFtpScheme,
20 chrome::kJavaScriptScheme, 20 chrome::kJavaScriptScheme,
21 chrome::kDataScheme, 21 chrome::kDataScheme,
22 chrome::kFileSystemScheme, 22 chrome::kFileSystemScheme,
23 }; 23 };
24 24
25 } // namespace 25 } // namespace
26 26
27 // static 27 // static
28 FrameNavigationState::FrameID FrameNavigationState::kInvalidFrameID =
29 FrameNavigationState::FrameID(-1, -1);
30
31 // static
28 bool FrameNavigationState::allow_extension_scheme_ = false; 32 bool FrameNavigationState::allow_extension_scheme_ = false;
29 33
30 FrameNavigationState::FrameNavigationState() 34 FrameNavigationState::FrameNavigationState()
31 : main_frame_id_(-1) { 35 : main_frame_id_(kInvalidFrameID) {
32 } 36 }
33 37
34 FrameNavigationState::~FrameNavigationState() {} 38 FrameNavigationState::~FrameNavigationState() {}
35 39
36 bool FrameNavigationState::CanSendEvents(int64 frame_id) const { 40 bool FrameNavigationState::CanSendEvents(FrameID frame_id) const {
37 FrameIdToStateMap::const_iterator frame_state = 41 FrameIdToStateMap::const_iterator frame_state =
38 frame_state_map_.find(frame_id); 42 frame_state_map_.find(frame_id);
39 if (frame_state == frame_state_map_.end() || 43 if (frame_state == frame_state_map_.end() ||
40 frame_state->second.error_occurred) { 44 frame_state->second.error_occurred) {
41 return false; 45 return false;
42 } 46 }
43 return IsValidUrl(frame_state->second.url); 47 return IsValidUrl(frame_state->second.url);
44 } 48 }
45 49
46 bool FrameNavigationState::IsValidUrl(const GURL& url) const { 50 bool FrameNavigationState::IsValidUrl(const GURL& url) const {
47 for (unsigned i = 0; i < arraysize(kValidSchemes); ++i) { 51 for (unsigned i = 0; i < arraysize(kValidSchemes); ++i) {
48 if (url.scheme() == kValidSchemes[i]) 52 if (url.scheme() == kValidSchemes[i])
49 return true; 53 return true;
50 } 54 }
51 // Allow about:blank. 55 // Allow about:blank.
52 if (url.spec() == chrome::kAboutBlankURL) 56 if (url.spec() == chrome::kAboutBlankURL)
53 return true; 57 return true;
54 if (allow_extension_scheme_ && url.scheme() == chrome::kExtensionScheme) 58 if (allow_extension_scheme_ && url.scheme() == chrome::kExtensionScheme)
55 return true; 59 return true;
56 return false; 60 return false;
57 } 61 }
58 62
59 void FrameNavigationState::TrackFrame(int64 frame_id, 63 void FrameNavigationState::TrackFrame(FrameID frame_id,
60 const GURL& url, 64 const GURL& url,
61 bool is_main_frame, 65 bool is_main_frame,
62 bool is_error_page) { 66 bool is_error_page) {
63 if (is_main_frame) { 67 if (is_main_frame) {
64 frame_state_map_.clear(); 68 frame_state_map_.clear();
65 frame_ids_.clear(); 69 frame_ids_.clear();
66 } 70 }
67 FrameState& frame_state = frame_state_map_[frame_id]; 71 FrameState& frame_state = frame_state_map_[frame_id];
68 frame_state.error_occurred = is_error_page; 72 frame_state.error_occurred = is_error_page;
69 frame_state.url = url; 73 frame_state.url = url;
70 frame_state.is_main_frame = is_main_frame; 74 frame_state.is_main_frame = is_main_frame;
71 frame_state.is_navigating = true; 75 frame_state.is_navigating = true;
72 frame_state.is_committed = false; 76 frame_state.is_committed = false;
73 frame_state.is_server_redirected = false; 77 frame_state.is_server_redirected = false;
74 if (is_main_frame) { 78 if (is_main_frame) {
75 main_frame_id_ = frame_id; 79 main_frame_id_ = frame_id;
76 } 80 }
77 frame_ids_.insert(frame_id); 81 frame_ids_.insert(frame_id);
78 } 82 }
79 83
80 void FrameNavigationState::UpdateFrame(int64 frame_id, const GURL& url) { 84 void FrameNavigationState::UpdateFrame(FrameID frame_id, const GURL& url) {
81 FrameIdToStateMap::iterator frame_state = frame_state_map_.find(frame_id); 85 FrameIdToStateMap::iterator frame_state = frame_state_map_.find(frame_id);
82 if (frame_state == frame_state_map_.end()) { 86 if (frame_state == frame_state_map_.end()) {
83 NOTREACHED(); 87 NOTREACHED();
84 return; 88 return;
85 } 89 }
86 frame_state->second.url = url; 90 frame_state->second.url = url;
87 } 91 }
88 92
89 bool FrameNavigationState::IsValidFrame(int64 frame_id) const { 93 bool FrameNavigationState::IsValidFrame(FrameID frame_id) const {
90 FrameIdToStateMap::const_iterator frame_state = 94 FrameIdToStateMap::const_iterator frame_state =
91 frame_state_map_.find(frame_id); 95 frame_state_map_.find(frame_id);
92 return (frame_state != frame_state_map_.end()); 96 return (frame_state != frame_state_map_.end());
93 } 97 }
94 98
95 GURL FrameNavigationState::GetUrl(int64 frame_id) const { 99 GURL FrameNavigationState::GetUrl(FrameID frame_id) const {
96 FrameIdToStateMap::const_iterator frame_state = 100 FrameIdToStateMap::const_iterator frame_state =
97 frame_state_map_.find(frame_id); 101 frame_state_map_.find(frame_id);
98 if (frame_state == frame_state_map_.end()) { 102 if (frame_state == frame_state_map_.end()) {
99 NOTREACHED(); 103 NOTREACHED();
100 return GURL(); 104 return GURL();
101 } 105 }
102 return frame_state->second.url; 106 return frame_state->second.url;
103 } 107 }
104 108
105 bool FrameNavigationState::IsMainFrame(int64 frame_id) const { 109 bool FrameNavigationState::IsMainFrame(FrameID frame_id) const {
106 return main_frame_id_ != -1 && main_frame_id_ == frame_id; 110 return main_frame_id_ != kInvalidFrameID && main_frame_id_ == frame_id;
107 } 111 }
108 112
109 int64 FrameNavigationState::GetMainFrameID() const { 113 FrameNavigationState::FrameID FrameNavigationState::GetMainFrameID() const {
110 return main_frame_id_; 114 return main_frame_id_;
111 } 115 }
112 116
113 void FrameNavigationState::SetErrorOccurredInFrame(int64 frame_id) { 117 void FrameNavigationState::SetErrorOccurredInFrame(FrameID frame_id) {
114 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 118 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
115 frame_state_map_[frame_id].error_occurred = true; 119 frame_state_map_[frame_id].error_occurred = true;
116 } 120 }
117 121
118 bool FrameNavigationState::GetErrorOccurredInFrame(int64 frame_id) const { 122 bool FrameNavigationState::GetErrorOccurredInFrame(FrameID frame_id) const {
119 FrameIdToStateMap::const_iterator frame_state = 123 FrameIdToStateMap::const_iterator frame_state =
120 frame_state_map_.find(frame_id); 124 frame_state_map_.find(frame_id);
121 return (frame_state == frame_state_map_.end() || 125 return (frame_state == frame_state_map_.end() ||
122 frame_state->second.error_occurred); 126 frame_state->second.error_occurred);
123 } 127 }
124 128
125 void FrameNavigationState::SetNavigationCompleted(int64 frame_id) { 129 void FrameNavigationState::SetNavigationCompleted(FrameID frame_id) {
126 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 130 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
127 frame_state_map_[frame_id].is_navigating = false; 131 frame_state_map_[frame_id].is_navigating = false;
128 } 132 }
129 133
130 bool FrameNavigationState::GetNavigationCompleted(int64 frame_id) const { 134 bool FrameNavigationState::GetNavigationCompleted(FrameID frame_id) const {
131 FrameIdToStateMap::const_iterator frame_state = 135 FrameIdToStateMap::const_iterator frame_state =
132 frame_state_map_.find(frame_id); 136 frame_state_map_.find(frame_id);
133 return (frame_state == frame_state_map_.end() || 137 return (frame_state == frame_state_map_.end() ||
134 !frame_state->second.is_navigating); 138 !frame_state->second.is_navigating);
135 } 139 }
136 140
137 void FrameNavigationState::SetNavigationCommitted(int64 frame_id) { 141 void FrameNavigationState::SetNavigationCommitted(FrameID frame_id) {
138 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 142 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
139 frame_state_map_[frame_id].is_committed = true; 143 frame_state_map_[frame_id].is_committed = true;
140 } 144 }
141 145
142 bool FrameNavigationState::GetNavigationCommitted(int64 frame_id) const { 146 bool FrameNavigationState::GetNavigationCommitted(FrameID frame_id) const {
143 FrameIdToStateMap::const_iterator frame_state = 147 FrameIdToStateMap::const_iterator frame_state =
144 frame_state_map_.find(frame_id); 148 frame_state_map_.find(frame_id);
145 return (frame_state != frame_state_map_.end() && 149 return (frame_state != frame_state_map_.end() &&
146 frame_state->second.is_committed); 150 frame_state->second.is_committed);
147 } 151 }
148 152
149 void FrameNavigationState::SetIsServerRedirected(int64 frame_id) { 153 void FrameNavigationState::SetIsServerRedirected(FrameID frame_id) {
150 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end()); 154 DCHECK(frame_state_map_.find(frame_id) != frame_state_map_.end());
151 frame_state_map_[frame_id].is_server_redirected = true; 155 frame_state_map_[frame_id].is_server_redirected = true;
152 } 156 }
153 157
154 bool FrameNavigationState::GetIsServerRedirected(int64 frame_id) const { 158 bool FrameNavigationState::GetIsServerRedirected(FrameID frame_id) const {
155 FrameIdToStateMap::const_iterator frame_state = 159 FrameIdToStateMap::const_iterator frame_state =
156 frame_state_map_.find(frame_id); 160 frame_state_map_.find(frame_id);
157 return (frame_state != frame_state_map_.end() && 161 return (frame_state != frame_state_map_.end() &&
158 frame_state->second.is_server_redirected); 162 frame_state->second.is_server_redirected);
159 } 163 }
160 164
161 } // namespace extensions 165 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698