Merge pull request #10429 from qazbnm456/web-request-origin
Track the origin of webRequest events
This commit is contained in:
commit
2048a1a638
3 changed files with 19 additions and 7 deletions
|
@ -30,15 +30,15 @@ class TrackableObjectBase {
|
||||||
// Wrap TrackableObject into a class that SupportsUserData.
|
// Wrap TrackableObject into a class that SupportsUserData.
|
||||||
void AttachAsUserData(base::SupportsUserData* wrapped);
|
void AttachAsUserData(base::SupportsUserData* wrapped);
|
||||||
|
|
||||||
|
// Get the weak_map_id from SupportsUserData.
|
||||||
|
static int32_t GetIDFromWrappedClass(base::SupportsUserData* wrapped);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ~TrackableObjectBase();
|
virtual ~TrackableObjectBase();
|
||||||
|
|
||||||
// Returns a closure that can destroy the native class.
|
// Returns a closure that can destroy the native class.
|
||||||
base::Closure GetDestroyClosure();
|
base::Closure GetDestroyClosure();
|
||||||
|
|
||||||
// Get the weak_map_id from SupportsUserData.
|
|
||||||
static int32_t GetIDFromWrappedClass(base::SupportsUserData* wrapped);
|
|
||||||
|
|
||||||
// Register a callback that should be destroyed before JavaScript environment
|
// Register a callback that should be destroyed before JavaScript environment
|
||||||
// gets destroyed.
|
// gets destroyed.
|
||||||
static base::Closure RegisterDestructionCallback(const base::Closure& c);
|
static base::Closure RegisterDestructionCallback(const base::Closure& c);
|
||||||
|
|
|
@ -6,11 +6,13 @@
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "atom/browser/api/atom_api_web_contents.h"
|
||||||
#include "atom/common/native_mate_converters/net_converter.h"
|
#include "atom/common/native_mate_converters/net_converter.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "brightray/browser/net/devtools_network_transaction.h"
|
#include "brightray/browser/net/devtools_network_transaction.h"
|
||||||
#include "content/public/browser/browser_thread.h"
|
#include "content/public/browser/browser_thread.h"
|
||||||
|
#include "content/public/browser/render_frame_host.h"
|
||||||
#include "net/url_request/url_request.h"
|
#include "net/url_request/url_request.h"
|
||||||
|
|
||||||
using brightray::DevToolsNetworkTransaction;
|
using brightray::DevToolsNetworkTransaction;
|
||||||
|
@ -74,10 +76,19 @@ void ToDictionary(base::DictionaryValue* details, net::URLRequest* request) {
|
||||||
FillRequestDetails(details, request);
|
FillRequestDetails(details, request);
|
||||||
details->SetInteger("id", request->identifier());
|
details->SetInteger("id", request->identifier());
|
||||||
details->SetDouble("timestamp", base::Time::Now().ToDoubleT() * 1000);
|
details->SetDouble("timestamp", base::Time::Now().ToDoubleT() * 1000);
|
||||||
auto info = content::ResourceRequestInfo::ForRequest(request);
|
const auto* info = content::ResourceRequestInfo::ForRequest(request);
|
||||||
|
if (info) {
|
||||||
|
int process_id = info->GetChildID();
|
||||||
|
int frame_id = info->GetRenderFrameID();
|
||||||
|
auto* webContents = content::WebContents::FromRenderFrameHost(
|
||||||
|
content::RenderFrameHost::FromID(process_id, frame_id));
|
||||||
|
details->SetInteger("webContentsId",
|
||||||
|
atom::api::WebContents::GetIDFromWrappedClass(webContents));
|
||||||
details->SetString("resourceType",
|
details->SetString("resourceType",
|
||||||
info ? ResourceTypeToString(info->GetResourceType())
|
ResourceTypeToString(info->GetResourceType()));
|
||||||
: "other");
|
} else {
|
||||||
|
details->SetString("resourceType", "other");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToDictionary(base::DictionaryValue* details,
|
void ToDictionary(base::DictionaryValue* details,
|
||||||
|
|
|
@ -89,6 +89,7 @@ describe('webRequest module', function () {
|
||||||
ses.webRequest.onBeforeRequest(function (details, callback) {
|
ses.webRequest.onBeforeRequest(function (details, callback) {
|
||||||
assert.equal(typeof details.id, 'number')
|
assert.equal(typeof details.id, 'number')
|
||||||
assert.equal(typeof details.timestamp, 'number')
|
assert.equal(typeof details.timestamp, 'number')
|
||||||
|
assert.equal(typeof details.webContentsId, 'number')
|
||||||
assert.equal(details.url, defaultURL)
|
assert.equal(details.url, defaultURL)
|
||||||
assert.equal(details.method, 'GET')
|
assert.equal(details.method, 'GET')
|
||||||
assert.equal(details.resourceType, 'xhr')
|
assert.equal(details.resourceType, 'xhr')
|
||||||
|
|
Loading…
Reference in a new issue