| 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..e2199d65889b750a80168106a674ccd767bf464b 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,38 @@ void InstantIOContext::ClearInstantProcessesOnIO(
|
| }
|
|
|
| // static
|
| +void InstantIOContext::AddMostVisitedItemIDOnIO(
|
| + scoped_refptr<InstantIOContext> instant_io_context,
|
| + uint64 most_visited_item_id, const GURL& url) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + instant_io_context->most_visited_item_id_to_url_map_[most_visited_item_id] =
|
| + url;
|
| +}
|
| +
|
| +// static
|
| +void InstantIOContext::DeleteMostVisitedURLsOnIO(
|
| + scoped_refptr<InstantIOContext> instant_io_context,
|
| + std::vector<uint64> deleted_ids, bool all_history) {
|
| + if (all_history) {
|
| + instant_io_context->most_visited_item_id_to_url_map_.clear();
|
| + return;
|
| + }
|
| +
|
| + for (size_t i = 0; i < deleted_ids.size(); ++i) {
|
| + instant_io_context->most_visited_item_id_to_url_map_.erase(
|
| + instant_io_context->most_visited_item_id_to_url_map_.find(
|
| + deleted_ids[i]));
|
| + }
|
| +}
|
| +
|
| +// 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 +118,34 @@ bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) {
|
| return false;
|
| }
|
|
|
| +// static
|
| +bool InstantIOContext::GetURLForMostVisitedItemId(
|
| + const net::URLRequest* request,
|
| + uint64 most_visited_item_id,
|
| + GURL* url) {
|
| + InstantIOContext* instant_io_context = GetDataForRequest(request);
|
| + if (!instant_io_context) {
|
| + *url = GURL();
|
| + return false;
|
| + }
|
| +
|
| + return instant_io_context->GetURLForMostVisitedItemId(most_visited_item_id,
|
| + url);
|
| +}
|
| +
|
| bool InstantIOContext::IsInstantProcess(int process_id) const {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| return process_ids_.count(process_id) != 0;
|
| }
|
| +
|
| +bool InstantIOContext::GetURLForMostVisitedItemId(uint64 most_visited_item_id,
|
| + GURL* url) {
|
| + std::map<uint64, GURL>::iterator it =
|
| + most_visited_item_id_to_url_map_.find(most_visited_item_id);
|
| + if (it != most_visited_item_id_to_url_map_.end()) {
|
| + *url = it->second;
|
| + return true;
|
| + }
|
| + *url = GURL();
|
| + return false;
|
| +}
|
|
|