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

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

Issue 10416002: Seculative resource prefetching for URLs CL. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 7 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
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 173e7a83eb1339ef741ed60f5b3e3438fd19f775..7fb52530554ce4316a953d923f607960730ab2e6 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 "webkit/glue/resource_type.h"
using predictors::AutocompleteActionPredictor;
+using predictors::ResourcePrefetchPredictor;
+using predictors::ResourcePrefetchPredictorTables;
+
+namespace {
+
+std::string ConvertResourceType(ResourceType::Type type) {
+ switch (type) {
+ case ResourceType::IMAGE:
+ return "Image";
+ case ResourceType::STYLESHEET:
+ return "Stylesheet";
+ case ResourceType::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,5 +79,45 @@ void PredictorsHandler::RequestAutocompleteActionPredictorDb(
dict.SetDouble("hit_weight", AutocompleteActionPredictor::get_hit_weight());
}
- web_ui()->CallJavascriptFunction("updateDatabaseTable", dict);
+ 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();
+ for (ResourcePrefetchPredictor::UrlTableCacheMap::const_iterator it =
+ resource_prefetch_predictor_->url_table_cache_.begin();
+ it != resource_prefetch_predictor_->url_table_cache_.end();
+ ++it) {
+ base::DictionaryValue* main = new base::DictionaryValue();
+ main->SetString("main_frame_url", it->first.spec());
+ base::ListValue* resources = new base::ListValue();
+ for (int i = 0; i < static_cast<int>(it->second.rows_.size()); ++i) {
dominich 2012/05/21 16:16:53 use iterator loop
Shishir 2012/05/23 01:46:46 Done.
+ const ResourcePrefetchPredictorTables::UrlTableRow& row =
+ it->second.rows_[i];
+
+ 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);
+ }
+ dict.Set("db", db);
+ }
+
+ web_ui()->CallJavascriptFunction("updateResourcePrefetchPredictorDb", dict);
}

Powered by Google App Engine
This is Rietveld 408576698