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

Side by Side Diff: extensions/browser/api/web_request/web_request_event_details.cc

Issue 2002763003: webRequest: reliably determine tabId (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webRequest-testing-unload
Patch Set: Use FrameData + fix comments Created 4 years, 7 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "extensions/browser/api/web_request/web_request_event_details.h" 5 #include "extensions/browser/api/web_request/web_request_event_details.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/render_frame_host.h" 10 #include "content/public/browser/render_frame_host.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 142 }
143 } 143 }
144 144
145 void WebRequestEventDetails::SetResponseSource(const net::URLRequest* request) { 145 void WebRequestEventDetails::SetResponseSource(const net::URLRequest* request) {
146 dict_.SetBoolean(keys::kFromCache, request->was_cached()); 146 dict_.SetBoolean(keys::kFromCache, request->was_cached());
147 const std::string response_ip = request->GetSocketAddress().host(); 147 const std::string response_ip = request->GetSocketAddress().host();
148 if (!response_ip.empty()) 148 if (!response_ip.empty())
149 dict_.SetString(keys::kIpKey, response_ip); 149 dict_.SetString(keys::kIpKey, response_ip);
150 } 150 }
151 151
152 void WebRequestEventDetails::DetermineFrameIdOnUI() { 152 void WebRequestEventDetails::DetermineFrameIdOnUI() {
Devlin 2016/05/23 20:28:48 nit: this does a bit more now - maybe rename to so
robwu 2016/05/23 20:54:15 Done. I also did another pass through the Extensio
153 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 153 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
154 content::RenderFrameHost* rfh = 154 content::RenderFrameHost* rfh =
155 content::RenderFrameHost::FromID(render_process_id_, render_frame_id_); 155 content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
156 dict_.SetInteger(keys::kFrameIdKey, ExtensionApiFrameIdMap::GetFrameId(rfh)); 156 ExtensionApiFrameIdMap::FrameData frame_data =
157 dict_.SetInteger(keys::kParentFrameIdKey, 157 ExtensionApiFrameIdMap::Get()->GetFrameData(rfh);
158 ExtensionApiFrameIdMap::GetParentFrameId(rfh)); 158
159 dict_.SetInteger(keys::kTabIdKey, frame_data.tab_id);
160 dict_.SetInteger(keys::kFrameIdKey, frame_data.frame_id);
161 dict_.SetInteger(keys::kParentFrameIdKey, frame_data.parent_frame_id);
159 } 162 }
160 163
161 void WebRequestEventDetails::DetermineFrameIdOnIO( 164 void WebRequestEventDetails::DetermineFrameIdOnIO(
162 const DeterminedFrameIdCallback& callback) { 165 const DeterminedFrameIdCallback& callback) {
163 std::unique_ptr<WebRequestEventDetails> self(this); 166 std::unique_ptr<WebRequestEventDetails> self(this);
164 ExtensionApiFrameIdMap::Get()->GetFrameDataOnIO( 167 ExtensionApiFrameIdMap::Get()->GetFrameDataOnIO(
165 render_process_id_, render_frame_id_, 168 render_process_id_, render_frame_id_,
166 base::Bind(&WebRequestEventDetails::OnDeterminedFrameId, 169 base::Bind(&WebRequestEventDetails::OnDeterminedFrameId,
167 base::Unretained(this), base::Passed(&self), callback)); 170 base::Unretained(this), base::Passed(&self), callback));
168 } 171 }
(...skipping 14 matching lines...) Expand all
183 WebRequestEventDetails::GetAndClearDict() { 186 WebRequestEventDetails::GetAndClearDict() {
184 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue); 187 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue);
185 dict_.Swap(result.get()); 188 dict_.Swap(result.get());
186 return result; 189 return result;
187 } 190 }
188 191
189 void WebRequestEventDetails::OnDeterminedFrameId( 192 void WebRequestEventDetails::OnDeterminedFrameId(
190 std::unique_ptr<WebRequestEventDetails> self, 193 std::unique_ptr<WebRequestEventDetails> self,
191 const DeterminedFrameIdCallback& callback, 194 const DeterminedFrameIdCallback& callback,
192 const ExtensionApiFrameIdMap::FrameData& frame_data) { 195 const ExtensionApiFrameIdMap::FrameData& frame_data) {
196 dict_.SetInteger(keys::kTabIdKey, frame_data.tab_id);
193 dict_.SetInteger(keys::kFrameIdKey, frame_data.frame_id); 197 dict_.SetInteger(keys::kFrameIdKey, frame_data.frame_id);
194 dict_.SetInteger(keys::kParentFrameIdKey, frame_data.parent_frame_id); 198 dict_.SetInteger(keys::kParentFrameIdKey, frame_data.parent_frame_id);
195 callback.Run(std::move(self)); 199 callback.Run(std::move(self));
196 } 200 }
197 201
198 } // namespace extensions 202 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698