| Index: chrome/browser/ui/webui/instant_ui.cc
|
| diff --git a/chrome/browser/ui/webui/instant_ui.cc b/chrome/browser/ui/webui/instant_ui.cc
|
| index 0e00082fa2f5c670b032f5514441d68b32b12c85..b725601330e5a77a474f3356f57bf0af7abb4779 100644
|
| --- a/chrome/browser/ui/webui/instant_ui.cc
|
| +++ b/chrome/browser/ui/webui/instant_ui.cc
|
| @@ -1,21 +1,16 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2012 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| #include "chrome/browser/ui/webui/instant_ui.h"
|
|
|
| #include "base/bind.h"
|
| -#include "base/prefs/pref_service.h"
|
| #include "base/stringprintf.h"
|
| -#include "base/time.h"
|
| -#include "chrome/browser/instant/instant_controller.h"
|
| +#include "base/values.h"
|
| +#include "chrome/browser/instant/instant_service.h"
|
| +#include "chrome/browser/instant/instant_service_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| -#include "chrome/browser/ui/browser_instant_controller.h"
|
| -#include "chrome/common/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| -#include "components/user_prefs/pref_registry_syncable.h"
|
| #include "content/public/browser/web_ui.h"
|
| #include "content/public/browser/web_ui_data_source.h"
|
| #include "content/public/browser/web_ui_message_handler.h"
|
| @@ -26,7 +21,6 @@ namespace {
|
| content::WebUIDataSource* CreateInstantHTMLSource() {
|
| content::WebUIDataSource* source =
|
| content::WebUIDataSource::Create(chrome::kChromeUIInstantHost);
|
| - source->SetJsonPath("strings.js");
|
| source->AddResourcePath("instant.js", IDR_INSTANT_JS);
|
| source->AddResourcePath("instant.css", IDR_INSTANT_CSS);
|
| source->SetDefaultResource(IDR_INSTANT_HTML);
|
| @@ -41,117 +35,68 @@ std::string FormatTime(int64 time) {
|
| exploded.hour, exploded.minute, exploded.second, exploded.millisecond);
|
| }
|
|
|
| -// This class receives JavaScript messages from the renderer.
|
| -// Note that the WebUI infrastructure runs on the UI thread, therefore all of
|
| -// this class's methods are expected to run on the UI thread.
|
| -class InstantUIMessageHandler
|
| - : public content::WebUIMessageHandler,
|
| - public base::SupportsWeakPtr<InstantUIMessageHandler> {
|
| +// This class receives JavaScript messages from the renderer. Note that the
|
| +// WebUI infrastructure runs on the UI thread, therefore all of this class's
|
| +// methods are expected to run on the UI thread.
|
| +class InstantUIMessageHandler : public content::WebUIMessageHandler {
|
| public:
|
| InstantUIMessageHandler();
|
| virtual ~InstantUIMessageHandler();
|
|
|
| - // WebUIMessageHandler implementation.
|
| + private:
|
| + // Overridden from content::WebUIMessageHandler:
|
| virtual void RegisterMessages() OVERRIDE;
|
|
|
| - private:
|
| - void GetPreferenceValue(const base::ListValue* args);
|
| - void SetPreferenceValue(const base::ListValue* args);
|
| - void GetDebugInfo(const base::ListValue* value);
|
| - void ClearDebugInfo(const base::ListValue* value);
|
| + void GetDebugEvents(const base::ListValue* value);
|
| + void ClearDebugEvents(const base::ListValue* value);
|
|
|
| DISALLOW_COPY_AND_ASSIGN(InstantUIMessageHandler);
|
| };
|
|
|
| -InstantUIMessageHandler::InstantUIMessageHandler() {}
|
| +InstantUIMessageHandler::InstantUIMessageHandler() {
|
| +}
|
|
|
| -InstantUIMessageHandler::~InstantUIMessageHandler() {}
|
| +InstantUIMessageHandler::~InstantUIMessageHandler() {
|
| +}
|
|
|
| void InstantUIMessageHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback(
|
| - "getPreferenceValue",
|
| - base::Bind(&InstantUIMessageHandler::GetPreferenceValue,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback(
|
| - "setPreferenceValue",
|
| - base::Bind(&InstantUIMessageHandler::SetPreferenceValue,
|
| + "getDebugEvents",
|
| + base::Bind(&InstantUIMessageHandler::GetDebugEvents,
|
| base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback(
|
| - "getDebugInfo",
|
| - base::Bind(&InstantUIMessageHandler::GetDebugInfo,
|
| + "clearDebugEvents",
|
| + base::Bind(&InstantUIMessageHandler::ClearDebugEvents,
|
| base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback(
|
| - "clearDebugInfo",
|
| - base::Bind(&InstantUIMessageHandler::ClearDebugInfo,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void InstantUIMessageHandler::GetPreferenceValue(const base::ListValue* args) {
|
| - std::string pref_name;
|
| - if (!args->GetString(0, &pref_name)) return;
|
| -
|
| - base::StringValue pref_name_value(pref_name);
|
| - if (pref_name == prefs::kInstantUIZeroSuggestUrlPrefix) {
|
| - PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
|
| - base::StringValue arg(prefs->GetString(pref_name.c_str()));
|
| - web_ui()->CallJavascriptFunction(
|
| - "instantConfig.getPreferenceValueResult", pref_name_value, arg);
|
| - }
|
| -}
|
| -
|
| -void InstantUIMessageHandler::SetPreferenceValue(const base::ListValue* args) {
|
| - std::string pref_name;
|
| - if (!args->GetString(0, &pref_name)) return;
|
| -
|
| - if (pref_name == prefs::kInstantUIZeroSuggestUrlPrefix) {
|
| - std::string value;
|
| - if (!args->GetString(1, &value))
|
| - return;
|
| - PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
|
| - prefs->SetString(pref_name.c_str(), value);
|
| - }
|
| }
|
|
|
| -void InstantUIMessageHandler::GetDebugInfo(const base::ListValue* args) {
|
| -#if !defined(OS_ANDROID)
|
| - typedef std::pair<int64, std::string> DebugEvent;
|
| -
|
| - if (!web_ui()->GetWebContents())
|
| - return;
|
| - Browser* browser = chrome::FindBrowserWithWebContents(
|
| - web_ui()->GetWebContents());
|
| - if (!browser || !browser->instant_controller())
|
| +void InstantUIMessageHandler::GetDebugEvents(
|
| + const base::ListValue* /* args */) {
|
| + InstantService* service =
|
| + InstantServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()));
|
| + if (!service)
|
| return;
|
|
|
| - InstantController* instant = browser->instant_controller()->instant();
|
| - const std::list<DebugEvent>& events = instant->debug_events();
|
| -
|
| - base::DictionaryValue data;
|
| - base::ListValue* entries = new base::ListValue();
|
| - for (std::list<DebugEvent>::const_iterator it = events.begin();
|
| - it != events.end(); ++it) {
|
| - base::DictionaryValue* entry = new base::DictionaryValue();
|
| - entry->SetString("time", FormatTime(it->first));
|
| - entry->SetString("text", it->second);
|
| - entries->Append(entry);
|
| + base::ListValue events;
|
| + const InstantService::DebugEventsList& source = service->debug_events();
|
| +
|
| + for (InstantService::DebugEventsList::const_iterator i = source.begin();
|
| + i != source.end(); ++i) {
|
| + scoped_ptr<base::DictionaryValue> event(new base::DictionaryValue());
|
| + event->SetString("time", FormatTime(i->first));
|
| + event->SetString("text", i->second);
|
| + events.Append(event.release());
|
| }
|
| - data.Set("entries", entries);
|
|
|
| - web_ui()->CallJavascriptFunction("instantConfig.getDebugInfoResult", data);
|
| -#endif
|
| + web_ui()->CallJavascriptFunction("instantConfig.setDebugEvents", events);
|
| }
|
|
|
| -void InstantUIMessageHandler::ClearDebugInfo(const base::ListValue* args) {
|
| -#if !defined(OS_ANDROID)
|
| - if (!web_ui()->GetWebContents())
|
| - return;
|
| - Browser* browser = chrome::FindBrowserWithWebContents(
|
| - web_ui()->GetWebContents());
|
| - if (!browser || !browser->instant_controller())
|
| - return;
|
| -
|
| - browser->instant_controller()->instant()->ClearDebugEvents();
|
| -#endif
|
| +void InstantUIMessageHandler::ClearDebugEvents(
|
| + const base::ListValue* /* args */) {
|
| + InstantService* service =
|
| + InstantServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()));
|
| + if (service)
|
| + service->ClearDebugEvents();
|
| }
|
|
|
| } // namespace
|
| @@ -167,8 +112,5 @@ InstantUI::InstantUI(content::WebUI* web_ui) : WebUIController(web_ui) {
|
| content::WebUIDataSource::Add(profile, CreateInstantHTMLSource());
|
| }
|
|
|
| -// static
|
| -void InstantUI::RegisterUserPrefs(PrefRegistrySyncable* registry) {
|
| - registry->RegisterStringPref(prefs::kInstantUIZeroSuggestUrlPrefix, "",
|
| - PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| +InstantUI::~InstantUI() {
|
| }
|
|
|