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);
 | 
				
			||||||
  details->SetString("resourceType",
 | 
					  if (info) {
 | 
				
			||||||
                     info ? ResourceTypeToString(info->GetResourceType())
 | 
					    int process_id = info->GetChildID();
 | 
				
			||||||
                          : "other");
 | 
					    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",
 | 
				
			||||||
 | 
					        ResourceTypeToString(info->GetResourceType()));
 | 
				
			||||||
 | 
					  } 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue