| Index: chrome/browser/instant/instant_io_context.cc | 
| diff --git a/chrome/browser/instant/instant_io_context.cc b/chrome/browser/instant/instant_io_context.cc | 
| index a4ab4fd6e342bdfa11700553b1c08e5bf4619fc6..e0ea6eb0738923fe8a98c49a3dbbbe66983ee5a2 100644 | 
| --- a/chrome/browser/instant/instant_io_context.cc | 
| +++ b/chrome/browser/instant/instant_io_context.cc | 
| @@ -7,6 +7,7 @@ | 
| #include "content/public/browser/browser_thread.h" | 
| #include "content/public/browser/resource_context.h" | 
| #include "content/public/browser/resource_request_info.h" | 
| +#include "googleurl/src/gurl.h" | 
| #include "net/url_request/url_request.h" | 
|  | 
| using content::BrowserThread; | 
| @@ -21,6 +22,15 @@ InstantIOContext* GetDataForResourceContext( | 
| context, InstantIOContext::kInstantIOContextKeyName); | 
| } | 
|  | 
| +InstantIOContext* GetDataForRequest(const net::URLRequest* request) { | 
| +  const content::ResourceRequestInfo* info = | 
| +      content::ResourceRequestInfo::ForRequest(request); | 
| +  if (!info) | 
| +    return NULL; | 
| + | 
| +  return GetDataForResourceContext(info->GetContext()); | 
| +} | 
| + | 
| }  // namespace | 
|  | 
| const char InstantIOContext::kInstantIOContextKeyName[] = "instant_io_context"; | 
| @@ -65,14 +75,21 @@ void InstantIOContext::ClearInstantProcessesOnIO( | 
| } | 
|  | 
| // static | 
| +void InstantIOContext::AddRestrictedIDOnIO( | 
| +    scoped_refptr<InstantIOContext> instant_io_context, | 
| +    uint64 restricted_id, const GURL& url) { | 
| +  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| +  instant_io_context->id_to_url_map_[restricted_id] = url; | 
| +} | 
| + | 
| +// static | 
| bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) { | 
| const content::ResourceRequestInfo* info = | 
| content::ResourceRequestInfo::ForRequest(request); | 
| if (!info) | 
| return false; | 
|  | 
| -  InstantIOContext* instant_io_context = | 
| -      GetDataForResourceContext(info->GetContext()); | 
| +  InstantIOContext* instant_io_context = GetDataForRequest(request); | 
| if (!instant_io_context) | 
| return false; | 
|  | 
| @@ -84,7 +101,29 @@ bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) { | 
| return false; | 
| } | 
|  | 
| +// static | 
| +bool InstantIOContext::GetURLForRestrictedId(const net::URLRequest* request, | 
| +                                             uint64 restricted_id, GURL* url) { | 
| +  InstantIOContext* instant_io_context = GetDataForRequest(request); | 
| +  if (!instant_io_context) { | 
| +    *url = GURL(); | 
| +    return false; | 
| +  } | 
| + | 
| +  return instant_io_context->GetURLForRestrictedId(restricted_id, url); | 
| +} | 
| + | 
| bool InstantIOContext::IsInstantProcess(int process_id) const { | 
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| return process_ids_.count(process_id) != 0; | 
| } | 
| + | 
| +bool InstantIOContext::GetURLForRestrictedId(uint64 restricted_id, GURL* url) { | 
| +  std::map<uint64, GURL>::iterator it = id_to_url_map_.find(restricted_id); | 
| +  if (it != id_to_url_map_.end()) { | 
| +    *url = it->second; | 
| +    return true; | 
| +  } | 
| +  *url = GURL(); | 
| +  return false; | 
| +} | 
|  |