Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4508)

Unified Diff: chrome/browser/ui/webui/predictors/predictors_handler.cc

Issue 462423004: Revert CL 117933003. Re-add resource speculative prefetching code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to fix patch failure Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/predictors/predictors_handler.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/predictors/predictors_handler.cc
diff --git a/chrome/browser/ui/webui/predictors/predictors_handler.cc b/chrome/browser/ui/webui/predictors/predictors_handler.cc
index bd7f39b674624320ce6e2825a25df1b011c003c8..5845797c43d209f02d012a0e900f19b600bef1b0 100644
--- a/chrome/browser/ui/webui/predictors/predictors_handler.cc
+++ b/chrome/browser/ui/webui/predictors/predictors_handler.cc
@@ -8,14 +8,39 @@
#include "base/values.h"
#include "chrome/browser/predictors/autocomplete_action_predictor.h"
#include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
+#include "chrome/browser/predictors/resource_prefetch_predictor.h"
+#include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
+#include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/web_ui.h"
+#include "content/public/common/resource_type.h"
using predictors::AutocompleteActionPredictor;
+using predictors::ResourcePrefetchPredictor;
+using predictors::ResourcePrefetchPredictorTables;
+
+namespace {
+
+std::string ConvertResourceType(content::ResourceType type) {
+ switch (type) {
+ case content::RESOURCE_TYPE_IMAGE:
+ return "Image";
+ case content::RESOURCE_TYPE_STYLESHEET:
+ return "Stylesheet";
+ case content::RESOURCE_TYPE_SCRIPT:
+ return "Script";
+ default:
+ return "Unknown";
+ }
+}
+
+} // namespace
PredictorsHandler::PredictorsHandler(Profile* profile) {
autocomplete_action_predictor_ =
predictors::AutocompleteActionPredictorFactory::GetForProfile(profile);
+ resource_prefetch_predictor_ =
+ predictors::ResourcePrefetchPredictorFactory::GetForProfile(profile);
}
PredictorsHandler::~PredictorsHandler() { }
@@ -24,6 +49,9 @@ void PredictorsHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("requestAutocompleteActionPredictorDb",
base::Bind(&PredictorsHandler::RequestAutocompleteActionPredictorDb,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback("requestResourcePrefetchPredictorDb",
+ base::Bind(&PredictorsHandler::RequestResourcePrefetchPredictorDb,
+ base::Unretained(this)));
}
void PredictorsHandler::RequestAutocompleteActionPredictorDb(
@@ -51,3 +79,52 @@ void PredictorsHandler::RequestAutocompleteActionPredictorDb(
web_ui()->CallJavascriptFunction("updateAutocompleteActionPredictorDb", dict);
}
+
+void PredictorsHandler::RequestResourcePrefetchPredictorDb(
+ const base::ListValue* args) {
+ const bool enabled = (resource_prefetch_predictor_ != NULL);
+ base::DictionaryValue dict;
+ dict.SetBoolean("enabled", enabled);
+
+ if (enabled) {
+ // Url Database cache.
+ base::ListValue* db = new base::ListValue();
+ AddPrefetchDataMapToListValue(
+ *resource_prefetch_predictor_->url_table_cache_, db);
+ dict.Set("url_db", db);
+
+ db = new base::ListValue();
+ AddPrefetchDataMapToListValue(
+ *resource_prefetch_predictor_->host_table_cache_, db);
+ dict.Set("host_db", db);
+ }
+
+ web_ui()->CallJavascriptFunction("updateResourcePrefetchPredictorDb", dict);
+}
+
+void PredictorsHandler::AddPrefetchDataMapToListValue(
+ const ResourcePrefetchPredictor::PrefetchDataMap& data_map,
+ base::ListValue* db) const {
+ for (ResourcePrefetchPredictor::PrefetchDataMap::const_iterator it =
+ data_map.begin(); it != data_map.end(); ++it) {
+ base::DictionaryValue* main = new base::DictionaryValue();
+ main->SetString("main_frame_url", it->first);
+ base::ListValue* resources = new base::ListValue();
+ for (ResourcePrefetchPredictor::ResourceRows::const_iterator
+ row = it->second.resources.begin();
+ row != it->second.resources.end(); ++row) {
+ base::DictionaryValue* resource = new base::DictionaryValue();
+ resource->SetString("resource_url", row->resource_url.spec());
+ resource->SetString("resource_type",
+ ConvertResourceType(row->resource_type));
+ resource->SetInteger("number_of_hits", row->number_of_hits);
+ resource->SetInteger("number_of_misses", row->number_of_misses);
+ resource->SetInteger("consecutive_misses", row->consecutive_misses);
+ resource->SetDouble("position", row->average_position);
+ resource->SetDouble("score", row->score);
+ resources->Append(resource);
+ }
+ main->Set("resources", resources);
+ db->Append(main);
+ }
+}
« no previous file with comments | « chrome/browser/ui/webui/predictors/predictors_handler.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698