Index: content/public/browser/resource_request_info.h |
diff --git a/content/public/browser/resource_request_info.h b/content/public/browser/resource_request_info.h |
index 50b04bf7c0bb1f55147d05033ea0d67151a58820..91deb56b75117a384665b1ad779670690a439be0 100644 |
--- a/content/public/browser/resource_request_info.h |
+++ b/content/public/browser/resource_request_info.h |
@@ -6,6 +6,7 @@ |
#define CONTENT_PUBLIC_BROWSER_RESOURCE_REQUEST_INFO_H_ |
#include "base/basictypes.h" |
+#include "base/callback_forward.h" |
#include "content/common/content_export.h" |
#include "content/public/common/resource_type.h" |
#include "third_party/WebKit/public/platform/WebPageVisibilityState.h" |
@@ -18,6 +19,7 @@ class URLRequest; |
namespace content { |
class ResourceContext; |
+class WebContents; |
// Each URLRequest allocated by the ResourceDispatcherHost has a |
// ResourceRequestInfo instance associated with it. |
@@ -51,14 +53,32 @@ class ResourceRequestInfo { |
int* render_process_id, |
int* render_frame_id); |
+ // A callback that returns a pointer to a WebContents. The callback can |
+ // always be used, but it may return nullptr: if the info used to |
+ // instantiate the callback can no longer be used to return a WebContents, |
+ // nullptr will be returned instead. |
+ // The callback should only run on the UI thread and it should always be |
+ // non-null. |
+ using WebContentsGetter = base::Callback<WebContents*(void)>; |
+ |
+ // Returns a callback that returns a pointer to the WebContents this request |
+ // is associated with, or nullptr if it no longer exists or the request is |
+ // not associated with a WebContents. The callback should only run on the UI |
+ // thread. |
+ // Note: Not all resource requests will be owned by a WebContents. For |
+ // example, requests made by a ServiceWorker. |
+ virtual WebContentsGetter GetWebContentsGetterForRequest() const = 0; |
+ |
// Returns the associated ResourceContext. |
virtual ResourceContext* GetContext() const = 0; |
// The child process unique ID of the requestor. |
+ // To get a WebContents, use GetWebContentsGetterForRequest instead. |
virtual int GetChildID() const = 0; |
// The IPC route identifier for this request (this identifies the RenderView |
// or like-thing in the renderer that the request gets routed to). |
+ // To get a WebContents, use GetWebContentsGetterForRequest instead. |
virtual int GetRouteID() const = 0; |
// The pid of the originating process, if the request is sent on behalf of a |
@@ -66,6 +86,7 @@ class ResourceRequestInfo { |
virtual int GetOriginPID() const = 0; |
// The IPC route identifier of the RenderFrame. |
+ // To get a WebContents, use GetWebContentsGetterForRequest instead. |
// TODO(jam): once all navigation and resource requests are sent between |
// frames and RenderView/RenderViewHost aren't involved we can remove this and |
// just use GetRouteID above. |