| 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);
|
| + }
|
| +}
|
|
|