Index: chrome/renderer/extensions/request_sender.h |
=================================================================== |
--- chrome/renderer/extensions/request_sender.h (revision 246091) |
+++ chrome/renderer/extensions/request_sender.h (working copy) |
@@ -42,6 +42,20 @@ |
const std::string& error) = 0; |
}; |
+ // Helper class to (re)set the |source_tab_id_| below. |
+ class ScopedTabID { |
+ public: |
+ ScopedTabID(RequestSender* request_sender, int tab_id); |
+ ~ScopedTabID(); |
+ |
+ private: |
+ RequestSender* const request_sender_; |
+ const int tab_id_; |
+ const int previous_tab_id_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ScopedTabID); |
+ }; |
+ |
explicit RequestSender(Dispatcher* dispatcher); |
~RequestSender(); |
@@ -60,6 +74,7 @@ |
int request_id, |
bool has_callback, |
bool for_io_thread, |
+ int source_tab_id, |
base::ListValue* value_args); |
// Handles responses from the extension host to calls made by StartRequest(). |
@@ -72,7 +87,12 @@ |
// TODO(kalman): Do this in a generic/safe way. |
void InvalidateSource(Source* source); |
+ int sender_tab_id() const { |
not at google - send to devlin
2014/01/28 18:45:45
(see comment in request_sender.cc; does this need
|
+ return sender_tab_id_; |
+ } |
+ |
private: |
+ friend class ScopedTabID; |
typedef std::map<int, linked_ptr<PendingRequest> > PendingRequestMap; |
void InsertRequest(int request_id, PendingRequest* pending_request); |
@@ -81,6 +101,8 @@ |
Dispatcher* dispatcher_; |
PendingRequestMap pending_requests_; |
+ int sender_tab_id_; // Id of the tab sending the request, or -1 if no tab. |
+ |
DISALLOW_COPY_AND_ASSIGN(RequestSender); |
}; |