summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc5
-rw-r--r--chrome/renderer/search_extension.cc94
-rw-r--r--chrome/renderer/search_extension.h23
-rw-r--r--chrome/renderer/searchbox.cc60
-rw-r--r--chrome/renderer/searchbox.h35
-rw-r--r--chrome/renderer/searchbox_extension.cc211
-rw-r--r--chrome/renderer/searchbox_extension.h2
7 files changed, 111 insertions, 319 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 6643f24..fff4b27 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -59,7 +59,6 @@
#include "chrome/renderer/print_web_view_helper.h"
#include "chrome/renderer/safe_browsing/malware_dom_details.h"
#include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h"
-#include "chrome/renderer/search_extension.h"
#include "chrome/renderer/searchbox.h"
#include "chrome/renderer/searchbox_extension.h"
#include "chrome/renderer/spellchecker/spellcheck.h"
@@ -178,10 +177,6 @@ void ChromeContentRendererClient::RenderThreadStarted() {
thread->RegisterExtension(extensions_v8::ExternalExtension::Get());
thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get());
thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get());
- v8::Extension* search_extension = extensions_v8::SearchExtension::Get();
- // search_extension is null if not enabled.
- if (search_extension)
- thread->RegisterExtension(search_extension);
CommandLine* command_line = CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kEnableBenchmarking))
diff --git a/chrome/renderer/search_extension.cc b/chrome/renderer/search_extension.cc
deleted file mode 100644
index 01e3a7d..0000000
--- a/chrome/renderer/search_extension.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2011 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/renderer/search_extension.h"
-
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "chrome/renderer/searchbox.h"
-#include "content/public/renderer/render_view.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "v8/include/v8.h"
-
-using WebKit::WebFrame;
-using WebKit::WebView;
-
-namespace extensions_v8 {
-
-const char* const kSearchExtensionName = "v8/InstantSearch";
-
-class SearchExtensionWrapper : public v8::Extension {
- public:
- SearchExtensionWrapper();
-
- // Allows v8's javascript code to call the native functions defined
- // in this class for window.chrome.
- virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
- v8::Handle<v8::String> name);
-
- // Helper function to find the RenderView. May return NULL.
- static content::RenderView* GetRenderView();
-
- // Implementation of window.chrome.setSuggestResult.
- static v8::Handle<v8::Value> SetSuggestResult(const v8::Arguments& args);
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SearchExtensionWrapper);
-};
-
-SearchExtensionWrapper::SearchExtensionWrapper()
- : v8::Extension(kSearchExtensionName,
- "var chrome;"
- "if (!chrome)"
- " chrome = {};"
- "chrome.setSuggestResult = function(text) {"
- " native function NativeSetSuggestResult();"
- " NativeSetSuggestResult(text);"
- "};") {
-}
-
-v8::Handle<v8::FunctionTemplate> SearchExtensionWrapper::GetNativeFunction(
- v8::Handle<v8::String> name) {
- if (name->Equals(v8::String::New("NativeSetSuggestResult"))) {
- return v8::FunctionTemplate::New(SetSuggestResult);
- }
-
- return v8::Handle<v8::FunctionTemplate>();
-}
-
-// static
-content::RenderView* SearchExtensionWrapper::GetRenderView() {
- WebFrame* webframe = WebFrame::frameForEnteredContext();
- DCHECK(webframe) << "There should be an active frame since we just got "
- "a native function called.";
- if (!webframe) return NULL;
-
- WebView* webview = webframe->view();
- if (!webview) return NULL; // can happen during closing
-
- return content::RenderView::FromWebView(webview);
-}
-
-// static
-v8::Handle<v8::Value> SearchExtensionWrapper::SetSuggestResult(
- const v8::Arguments& args) {
- if (!args.Length() || !args[0]->IsString()) return v8::Undefined();
-
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- std::vector<std::string> suggestions;
- suggestions.push_back(std::string(*v8::String::Utf8Value(args[0])));
- SearchBox::Get(render_view)->SetSuggestions(suggestions,
- INSTANT_COMPLETE_NOW);
- return v8::Undefined();
-}
-
-v8::Extension* SearchExtension::Get() {
- return new SearchExtensionWrapper();
-}
-
-} // namespace extensions_v8
diff --git a/chrome/renderer/search_extension.h b/chrome/renderer/search_extension.h
deleted file mode 100644
index 99c6f1f..0000000
--- a/chrome/renderer/search_extension.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2010 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.
-
-#ifndef CHROME_RENDERER_SEARCH_EXTENSION_H_
-#define CHROME_RENDERER_SEARCH_EXTENSION_H_
-
-namespace v8 {
-class Extension;
-}
-
-namespace extensions_v8 {
-
-class SearchExtension {
- public:
- // Returns the v8::Extension object handling search bindings. Returns null if
- // match-preview is not enabled. Caller takes ownership of returned object.
- static v8::Extension* Get();
-};
-
-} // namespace extensions_v8
-
-#endif // CHROME_RENDERER_SEARCH_EXTENSION_H_
diff --git a/chrome/renderer/searchbox.cc b/chrome/renderer/searchbox.cc
index fc9ee55..a662713 100644
--- a/chrome/renderer/searchbox.cc
+++ b/chrome/renderer/searchbox.cc
@@ -9,8 +9,6 @@
#include "content/public/renderer/render_view.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-using WebKit::WebView;
-
SearchBox::SearchBox(content::RenderView* render_view)
: content::RenderViewObserver(render_view),
content::RenderViewObserverTracker<SearchBox>(render_view),
@@ -22,7 +20,7 @@ SearchBox::SearchBox(content::RenderView* render_view)
SearchBox::~SearchBox() {
}
-void SearchBox::SetSuggestions(const std::vector<std::string>& suggestions,
+void SearchBox::SetSuggestions(const std::vector<string16>& suggestions,
InstantCompleteBehavior behavior) {
// Explicitly allow empty vector to be sent to the browser.
render_view()->Send(new ChromeViewHostMsg_SetSuggestions(
@@ -34,10 +32,10 @@ gfx::Rect SearchBox::GetRect() {
// Need to adjust for scale.
if (rect_.IsEmpty())
return rect_;
- WebView* web_view = render_view()->GetWebView();
+ WebKit::WebView* web_view = render_view()->GetWebView();
if (!web_view)
return rect_;
- double zoom = WebView::zoomLevelToZoomFactor(web_view->zoomLevel());
+ double zoom = WebKit::WebView::zoomLevelToZoomFactor(web_view->zoomLevel());
if (zoom == 0)
return rect_;
return gfx::Rect(static_cast<int>(static_cast<float>(rect_.x()) / zoom),
@@ -62,21 +60,22 @@ bool SearchBox::OnMessageReceived(const IPC::Message& message) {
void SearchBox::OnChange(const string16& value,
bool verbatim,
- int selection_start,
- int selection_end) {
+ size_t selection_start,
+ size_t selection_end) {
value_ = value;
verbatim_ = verbatim;
selection_start_ = selection_start;
selection_end_ = selection_end;
- if (!render_view()->GetWebView() || !render_view()->GetWebView()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchChange(
- render_view()->GetWebView()->mainFrame());
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ extensions_v8::SearchBoxExtension::DispatchChange(
+ render_view()->GetWebView()->mainFrame());
+ }
}
-void SearchBox::OnSubmit(const string16& value, bool verbatim) {
+void SearchBox::OnSubmit(const string16& value) {
value_ = value;
- verbatim_ = verbatim;
+ verbatim_ = true;
+ selection_start_ = selection_end_ = value_.size();
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
extensions_v8::SearchBoxExtension::DispatchSubmit(
render_view()->GetWebView()->mainFrame());
@@ -84,8 +83,10 @@ void SearchBox::OnSubmit(const string16& value, bool verbatim) {
Reset();
}
-void SearchBox::OnCancel() {
- verbatim_ = false;
+void SearchBox::OnCancel(const string16& value) {
+ value_ = value;
+ verbatim_ = true;
+ selection_start_ = selection_end_ = value_.size();
if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
extensions_v8::SearchBoxExtension::DispatchCancel(
render_view()->GetWebView()->mainFrame());
@@ -95,29 +96,24 @@ void SearchBox::OnCancel() {
void SearchBox::OnResize(const gfx::Rect& bounds) {
rect_ = bounds;
- if (!render_view()->GetWebView() || !render_view()->GetWebView()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchResize(
- render_view()->GetWebView()->mainFrame());
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ extensions_v8::SearchBoxExtension::DispatchResize(
+ render_view()->GetWebView()->mainFrame());
+ }
}
-void SearchBox::OnDetermineIfPageSupportsInstant(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end) {
- value_ = value;
- verbatim_ = verbatim;
- selection_start_ = selection_start;
- selection_end_ = selection_end;
- bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant(
- render_view()->GetWebView()->mainFrame());
- render_view()->Send(new ChromeViewHostMsg_InstantSupportDetermined(
- render_view()->GetRoutingID(), render_view()->GetPageId(), result));
+void SearchBox::OnDetermineIfPageSupportsInstant() {
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant(
+ render_view()->GetWebView()->mainFrame());
+ render_view()->Send(new ChromeViewHostMsg_InstantSupportDetermined(
+ render_view()->GetRoutingID(), render_view()->GetPageId(), result));
+ }
}
void SearchBox::Reset() {
+ value_.clear();
verbatim_ = false;
- value_ = string16();
selection_start_ = selection_end_ = 0;
rect_ = gfx::Rect();
}
diff --git a/chrome/renderer/searchbox.h b/chrome/renderer/searchbox.h
index 9f3c104..8447870 100644
--- a/chrome/renderer/searchbox.h
+++ b/chrome/renderer/searchbox.h
@@ -1,19 +1,27 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 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.
#ifndef CHROME_RENDERER_SEARCHBOX_H_
#define CHROME_RENDERER_SEARCHBOX_H_
-#include <string>
#include <vector>
+#include "base/basictypes.h"
#include "base/string16.h"
#include "chrome/common/instant_types.h"
#include "content/public/renderer/render_view_observer.h"
#include "content/public/renderer/render_view_observer_tracker.h"
#include "ui/gfx/rect.h"
+namespace content {
+class RenderView;
+}
+
+namespace IPC {
+class Message;
+}
+
class SearchBox : public content::RenderViewObserver,
public content::RenderViewObserverTracker<SearchBox> {
public:
@@ -21,13 +29,13 @@ class SearchBox : public content::RenderViewObserver,
virtual ~SearchBox();
// Sends ViewHostMsg_SetSuggestions to the browser.
- void SetSuggestions(const std::vector<std::string>& suggestions,
+ void SetSuggestions(const std::vector<string16>& suggestions,
InstantCompleteBehavior behavior);
const string16& value() const { return value_; }
bool verbatim() const { return verbatim_; }
- uint32 selection_start() const { return selection_start_; }
- uint32 selection_end() const { return selection_end_; }
+ size_t selection_start() const { return selection_start_; }
+ size_t selection_end() const { return selection_end_; }
gfx::Rect GetRect();
private:
@@ -36,23 +44,20 @@ class SearchBox : public content::RenderViewObserver,
void OnChange(const string16& value,
bool verbatim,
- int selection_start,
- int selection_end);
- void OnSubmit(const string16& value, bool verbatim);
- void OnCancel();
+ size_t selection_start,
+ size_t selection_end);
+ void OnSubmit(const string16& value);
+ void OnCancel(const string16& value);
void OnResize(const gfx::Rect& bounds);
- void OnDetermineIfPageSupportsInstant(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end);
+ void OnDetermineIfPageSupportsInstant();
// Sets the searchbox values to their initial value.
void Reset();
string16 value_;
bool verbatim_;
- uint32 selection_start_;
- uint32 selection_end_;
+ size_t selection_start_;
+ size_t selection_end_;
gfx::Rect rect_;
DISALLOW_COPY_AND_ASSIGN(SearchBox);
diff --git a/chrome/renderer/searchbox_extension.cc b/chrome/renderer/searchbox_extension.cc
index 29bddcf..fe027bb 100644
--- a/chrome/renderer/searchbox_extension.cc
+++ b/chrome/renderer/searchbox_extension.cc
@@ -4,27 +4,14 @@
#include "chrome/renderer/searchbox_extension.h"
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/command_line.h"
-#include "base/string_split.h"
-#include "base/stringprintf.h"
#include "chrome/renderer/searchbox.h"
#include "content/public/renderer/render_view.h"
#include "grit/renderer_resources.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
#include "ui/base/resource/resource_bundle.h"
#include "v8/include/v8.h"
-using WebKit::WebFrame;
-using WebKit::WebScriptSource;
-using WebKit::WebString;
-using WebKit::WebView;
-
namespace extensions_v8 {
static const char kSearchBoxExtensionName[] = "v8/SearchBox";
@@ -65,59 +52,17 @@ static const char kDispatchResizeEventScript[] =
" true;"
"}";
-// Deprecated API support.
-// TODO(tonyg): Remove these when they are no longer used.
-// ----------------------------------------------------------------------------
-// Script sent as the user is typing and the provider supports instant.
-// Params:
-// . the text the user typed.
-// '46' forces the server to give us verbatim results.
-static const char kUserInputScript[] =
- "if (window.chrome.userInput)"
- " window.chrome.userInput("
- " window.chrome.searchBox.value,"
- " window.chrome.searchBox.verbatim ? 46 : 0,"
- " window.chrome.searchBox.selectionStart);";
-
-// Script sent when the page is committed and the provider supports instant.
-// Params:
-// . the text the user typed.
-// . boolean indicating if the user pressed enter to accept the text.
-static const char kUserDoneScript[] =
- "if (window.chrome.userWantsQuery)"
- " window.chrome.userWantsQuery("
- " window.chrome.searchBox.value,"
- " window.chrome.searchBox.verbatim);";
-
-// Script sent when the bounds of the omnibox changes and the provider supports
-// instant. The params are the bounds relative to the origin of the preview
-// (x, y, width, height).
-static const char kSetOmniboxBoundsScript[] =
- "if (window.chrome.setDropdownDimensions)"
- " window.chrome.setDropdownDimensions("
- " window.chrome.searchBox.x,"
- " window.chrome.searchBox.y,"
- " window.chrome.searchBox.width,"
- " window.chrome.searchBox.height);";
-
// We first send this script down to determine if the page supports instant.
static const char kSupportsInstantScript[] =
- "if (window.chrome.sv) true; else false;";
-
-// The google.y.first array is a list of functions which are to be executed
-// after the external JavaScript used by Google web search loads. The deprecated
-// API requires setDropdownDimensions and userInput to be invoked after
-// the external JavaScript loads. So if they are not already registered, we add
-// them to the array of functions the page will execute after load. This tight
-// coupling discourages proliferation of the deprecated API.
-static const char kInitScript[] =
- "(function() {"
- "var initScript = function(){%s%s};"
- "if (window.chrome.setDropdownDimensions)"
- " initScript();"
- "else if (window.google && window.google.y)"
- " window.google.y.first.push(initScript);"
- "})();";
+ "if (window.chrome &&"
+ " window.chrome.searchBox &&"
+ " window.chrome.searchBox.onsubmit &&"
+ " typeof window.chrome.searchBox.onsubmit == 'function') {"
+ " true;"
+ "} else {"
+ " false;"
+ "}";
+
// ----------------------------------------------------------------------------
class SearchBoxExtensionWrapper : public v8::Extension {
@@ -169,7 +114,8 @@ class SearchBoxExtensionWrapper : public v8::Extension {
SearchBoxExtensionWrapper::SearchBoxExtensionWrapper(
const base::StringPiece& code)
- : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) {}
+ : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) {
+}
v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction(
v8::Handle<v8::String> name) {
@@ -197,12 +143,12 @@ v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction(
// static
content::RenderView* SearchBoxExtensionWrapper::GetRenderView() {
- WebFrame* webframe = WebFrame::frameForEnteredContext();
+ WebKit::WebFrame* webframe = WebKit::WebFrame::frameForEnteredContext();
DCHECK(webframe) << "There should be an active frame since we just got "
- "a native function called.";
+ "a native function called.";
if (!webframe) return NULL;
- WebView* webview = webframe->view();
+ WebKit::WebView* webview = webframe->view();
if (!webview) return NULL; // can happen during closing
return content::RenderView::FromWebView(webview);
@@ -215,7 +161,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetValue(
if (!render_view) return v8::Undefined();
return v8::String::New(
reinterpret_cast<const uint16_t*>(
- SearchBox::Get(render_view)->value().c_str()),
+ SearchBox::Get(render_view)->value().data()),
SearchBox::Get(render_view)->value().length());
}
@@ -232,7 +178,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart(
const v8::Arguments& args) {
content::RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->selection_start());
+ return v8::Uint32::New(SearchBox::Get(render_view)->selection_start());
}
// static
@@ -240,7 +186,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionEnd(
const v8::Arguments& args) {
content::RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->selection_end());
+ return v8::Uint32::New(SearchBox::Get(render_view)->selection_end());
}
// static
@@ -275,36 +221,30 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight(
return v8::Int32::New(SearchBox::Get(render_view)->GetRect().height());
}
-// Accepts a single argument in form:
-// {
-// suggestions: [
-// {
-// value: "..."
-// }
-// ]
-// }
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
const v8::Arguments& args) {
- std::vector<std::string> suggestions;
+ std::vector<string16> suggestions;
InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
- if (args.Length() && args[0]->IsArray()) {
- // For backwards compatibility, also accept an array of strings.
- // TODO(tonyg): Remove this when it is confirmed to be unused.
- v8::Local<v8::Array> suggestions_array =
- v8::Local<v8::Array>::Cast(args[0]);
- uint32_t length = suggestions_array->Length();
- for (uint32_t i = 0; i < length; i++) {
- std::string suggestion = *v8::String::Utf8Value(
- suggestions_array->Get(v8::Integer::New(i))->ToString());
- if (!suggestion.length()) continue;
- suggestions.push_back(suggestion);
+ if (args.Length() && args[0]->IsObject()) {
+ v8::Local<v8::Object> suggestion_json = args[0]->ToObject();
+
+ v8::Local<v8::Value> complete_value =
+ suggestion_json->Get(v8::String::New("complete_behavior"));
+ if (complete_value->IsString()) {
+ if (complete_value->Equals(v8::String::New("now"))) {
+ behavior = INSTANT_COMPLETE_NOW;
+ } else if (complete_value->Equals(v8::String::New("never"))) {
+ behavior = INSTANT_COMPLETE_NEVER;
+ } else if (complete_value->Equals(v8::String::New("delayed"))) {
+ behavior = INSTANT_COMPLETE_DELAYED;
+ } else {
+ VLOG(1) << "Unsupported complete behavior '"
+ << *v8::String::Utf8Value(complete_value) << "'";
+ }
}
- } else if (args.Length() && args[0]->IsObject()) {
- // Standard version, object argument.
- v8::Local<v8::Object> suggestion_json =
- v8::Local<v8::Object>::Cast(args[0]);
+
v8::Local<v8::Value> suggestions_field =
suggestion_json->Get(v8::String::New("suggestions"));
@@ -312,34 +252,21 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
v8::Local<v8::Array> suggestions_array =
suggestions_field.As<v8::Array>();
- uint32_t length = suggestions_array->Length();
- for (uint32_t i = 0; i < length; i++) {
- v8::Local<v8::Value> suggestion_value =
- suggestions_array->Get(v8::Integer::New(i));
+ size_t length = suggestions_array->Length();
+ for (size_t i = 0; i < length; i++) {
+ v8::Local<v8::Value> suggestion_value = suggestions_array->Get(i);
if (!suggestion_value->IsObject()) continue;
- v8::Local<v8::Object> suggestion_object =
- suggestion_value.As<v8::Object>();
+ v8::Local<v8::Object> suggestion_object = suggestion_value->ToObject();
v8::Local<v8::Value> suggestion_object_value =
suggestion_object->Get(v8::String::New("value"));
if (!suggestion_object_value->IsString()) continue;
- std::string suggestion = *v8::String::Utf8Value(
- suggestion_object_value->ToString());
- if (!suggestion.length()) continue;
+ string16 suggestion(reinterpret_cast<char16*>(*v8::String::Value(
+ suggestion_object_value->ToString())));
suggestions.push_back(suggestion);
}
}
- if (suggestion_json->Has(v8::String::New("complete_behavior"))) {
- v8::Local<v8::Value> complete_value =
- suggestion_json->Get(v8::String::New("complete_behavior"));
- if (complete_value->IsString()) {
- if (complete_value->Equals(v8::String::New("never")))
- behavior = INSTANT_COMPLETE_NEVER;
- else if (complete_value->Equals(v8::String::New("delayed")))
- behavior = INSTANT_COMPLETE_DELAYED;
- }
- }
}
if (content::RenderView* render_view = GetRenderView())
@@ -348,62 +275,48 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
}
// static
-void Dispatch(WebFrame* frame,
- WebString event_dispatch_script,
- WebString no_event_handler_script) {
+void Dispatch(WebKit::WebFrame* frame, WebKit::WebString script) {
DCHECK(frame) << "Dispatch requires frame";
- if (!frame)
- return;
-
- v8::Handle<v8::Value> result = frame->executeScriptAndReturnValue(
- WebScriptSource(event_dispatch_script));
- if (result.IsEmpty() || result->IsUndefined() || result->IsNull() ||
- result->IsFalse()) {
- frame->executeScript(WebScriptSource(no_event_handler_script));
- }
+ if (!frame) return;
+ frame->executeScript(WebKit::WebScriptSource(script));
}
// static
-void SearchBoxExtension::DispatchChange(WebFrame* frame) {
- Dispatch(frame, kDispatchChangeEventScript, kUserInputScript);
+void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) {
+ Dispatch(frame, kDispatchChangeEventScript);
}
// static
-void SearchBoxExtension::DispatchSubmit(WebFrame* frame) {
- Dispatch(frame, kDispatchSubmitEventScript, kUserDoneScript);
+void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) {
+ Dispatch(frame, kDispatchSubmitEventScript);
}
// static
-void SearchBoxExtension::DispatchCancel(WebFrame* frame) {
- Dispatch(frame, kDispatchCancelEventScript, kUserDoneScript);
+void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) {
+ Dispatch(frame, kDispatchCancelEventScript);
}
// static
-void SearchBoxExtension::DispatchResize(WebFrame* frame) {
- Dispatch(frame, kDispatchResizeEventScript, kSetOmniboxBoundsScript);
+void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) {
+ Dispatch(frame, kDispatchResizeEventScript);
}
// static
-bool SearchBoxExtension::PageSupportsInstant(WebFrame* frame) {
+bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) {
DCHECK(frame) << "PageSupportsInstant requires frame";
if (!frame) return false;
v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue(
- WebScriptSource(kSupportsInstantScript));
- bool supports_deprecated_api = !v.IsEmpty() && v->BooleanValue();
- // TODO(tonyg): Add way of detecting instant support to SearchBox API.
- bool supports_searchbox_api = supports_deprecated_api;
-
- // The deprecated API needs to notify the page of events it may have missed.
- // This isn't necessary in the SearchBox API, since the page can query the
- // API at any time.
- CR_DEFINE_STATIC_LOCAL(std::string, init_script,
- (StringPrintf(kInitScript, kSetOmniboxBoundsScript, kUserInputScript)));
- if (supports_deprecated_api) {
- frame->executeScript(WebScriptSource(WebString::fromUTF8(init_script)));
- }
+ WebKit::WebScriptSource(kSupportsInstantScript));
+ bool supports_instant = !v.IsEmpty() && v->BooleanValue();
+
+ // Send a resize message to tell the page that Chrome is actively using the
+ // searchbox API with it. The page uses the message to transition from
+ // "homepage" mode to "search" mode.
+ if (supports_instant)
+ DispatchResize(frame);
- return supports_searchbox_api || supports_deprecated_api;
+ return supports_instant;
}
// static
diff --git a/chrome/renderer/searchbox_extension.h b/chrome/renderer/searchbox_extension.h
index 1c52ab4..04f1e00 100644
--- a/chrome/renderer/searchbox_extension.h
+++ b/chrome/renderer/searchbox_extension.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 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.