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

Unified Diff: chrome/renderer/searchbox/searchbox_extension.cc

Issue 12386019: Instant: Use only one hidden WebContents per profile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 9 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/renderer/searchbox/searchbox_extension.cc
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
index 62b8397536d177b9dbba5cf96dc8cbf9c50aec6a..200b3a0ef632fa0c8f43bf3d38cb1ad30f8d9f3d 100644
--- a/chrome/renderer/searchbox/searchbox_extension.cc
+++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -4,995 +4,263 @@
#include "chrome/renderer/searchbox/searchbox_extension.h"
-#include "base/i18n/rtl.h"
-#include "base/stringprintf.h"
-#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
-#include "chrome/common/extensions/extension.h"
+#include "chrome/common/instant_types.h"
#include "chrome/renderer/searchbox/searchbox.h"
#include "content/public/renderer/render_view.h"
#include "grit/renderer_resources.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebURLRequest.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/WebView.h"
-#include "ui/base/keycodes/keyboard_codes.h"
#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/window_open_disposition.h"
#include "v8/include/v8.h"
namespace {
-const char kCSSBackgroundImageFormat[] = "-webkit-image-set("
- "url(chrome-search://theme/IDR_THEME_NTP_BACKGROUND?%s) 1x)";
+const char kSearchBoxExtensionName[] = "v8/SearchBox";
+
+const char kDetermineInstantSupportScript[] =
+ "chrome &&"
Jered 2013/03/26 16:36:42 Is it safe to omit window (could this have functio
+ "chrome.searchBox &&"
+ "chrome.searchBox.onsubmit &&"
+ "typeof chrome.searchBox.onsubmit == 'function';";
+
+const char kOnChangeScript[] =
+ "if (chrome &&"
+ " chrome.searchBox &&"
+ " chrome.searchBox.onchange &&"
+ " typeof chrome.searchBox.onchange == 'function')"
+ " chrome.searchBox.onchange();";
+
+const char kOnSubmitScript[] =
+ "if (chrome &&"
+ " chrome.searchBox &&"
+ " chrome.searchBox.onsubmit &&"
+ " typeof chrome.searchBox.onsubmit == 'function')"
+ " chrome.searchBox.onsubmit();";
+
+const char kOnBlurScript[] =
+ "if (chrome &&"
+ " chrome.searchBox &&"
+ " chrome.searchBox.oncancel &&"
+ " typeof chrome.searchBox.oncancel == 'function')"
+ " chrome.searchBox.oncancel();";
+
+const char kOnPopupBoundsScript[] =
+ "if (chrome &&"
+ " chrome.searchBox &&"
+ " chrome.searchBox.onresize &&"
+ " typeof chrome.searchBox.onresize == 'function')"
+ " chrome.searchBox.onresize();";
-const char kCSSBackgroundColorFormat[] = "rgba(%d,%d,%d,%s)";
-
-const char kCSSBackgroundPositionCenter[] = "center";
-const char kCSSBackgroundPositionLeft[] = "left";
-const char kCSSBackgroundPositionTop[] = "top";
-const char kCSSBackgroundPositionRight[] = "right";
-const char kCSSBackgroundPositionBottom[] = "bottom";
-
-const char kCSSBackgroundRepeatNo[] = "no-repeat";
-const char kCSSBackgroundRepeatX[] = "repeat-x";
-const char kCSSBackgroundRepeatY[] = "repeat-y";
-const char kCSSBackgroundRepeat[] = "repeat";
-
-const char kLTRHtmlTextDirection[] = "ltr";
-const char kRTLHtmlTextDirection[] = "rtl";
-
-// Converts a V8 value to a string16.
string16 V8ValueToUTF16(v8::Handle<v8::Value> v) {
v8::String::Value s(v);
return string16(reinterpret_cast<const char16*>(*s), s.length());
}
-// Converts string16 to V8 String.
v8::Handle<v8::String> UTF16ToV8String(const string16& s) {
return v8::String::New(reinterpret_cast<const uint16_t*>(s.data()), s.size());
}
-// Converts std::string to V8 String.
-v8::Handle<v8::String> UTF8ToV8String(const std::string& s) {
- return v8::String::New(s.data(), s.size());
+SearchBox* GetSearchBox() {
+ WebKit::WebFrame* frame = WebKit::WebFrame::frameForCurrentContext();
+ // The WebView may be NULL during closing.
+ if (!frame || !frame->view())
+ return NULL;
+
+ content::RenderView* render_view =
+ content::RenderView::FromWebView(frame->view());
+ if (!render_view)
+ return NULL;
+
+ return SearchBox::Get(render_view);
}
-void Dispatch(WebKit::WebFrame* frame, const WebKit::WebString& script) {
- if (!frame) return;
- frame->executeScript(WebKit::WebScriptSource(script));
+WebKit::WebFrame* GetFrame(content::RenderView* render_view) {
+ return render_view->GetWebView() ? render_view->GetWebView()->mainFrame() :
+ NULL;
+}
+
+void Dispatch(content::RenderView* render_view,
+ const WebKit::WebString& script) {
+ WebKit::WebFrame* frame = GetFrame(render_view);
+ if (frame)
+ frame->executeScript(WebKit::WebScriptSource(script));
}
} // namespace
namespace extensions_v8 {
-static const char kSearchBoxExtensionName[] = "v8/EmbeddedSearch";
Jered 2013/03/26 16:36:42 Where did all this stuff go? :-)
-
-static const char kDispatchChangeEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onchange &&"
- " typeof window.chrome.embeddedSearch.searchBox.onchange =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onchange();"
- " true;"
- "}";
-
-static const char kDispatchSubmitEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onsubmit &&"
- " typeof window.chrome.embeddedSearch.searchBox.onsubmit =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onsubmit();"
- " true;"
- "}";
-
-static const char kDispatchCancelEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.oncancel &&"
- " typeof window.chrome.embeddedSearch.searchBox.oncancel =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.oncancel();"
- " true;"
- "}";
-
-static const char kDispatchResizeEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onresize &&"
- " typeof window.chrome.embeddedSearch.searchBox.onresize =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onresize();"
- " true;"
- "}";
-
-// We first send this script down to determine if the page supports instant.
-static const char kSupportsInstantScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onsubmit &&"
- " typeof window.chrome.embeddedSearch.searchBox.onsubmit =="
- " 'function') {"
- " true;"
- "} else {"
- " false;"
- "}";
-
-// Extended API.
-
-// Per-context initialization.
-static const char kDispatchOnWindowReady[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearchOnWindowReady &&"
- " typeof window.chrome.embeddedSearchOnWindowReady == 'function') {"
- " window.chrome.embeddedSearchOnWindowReady();"
- "}";
-
-static const char kDispatchAutocompleteResultsEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onnativesuggestions &&"
- " typeof window.chrome.embeddedSearch.searchBox.onnativesuggestions =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onnativesuggestions();"
- " true;"
- "}";
-
-// Takes two printf-style replaceable values: count, key_code.
-static const char kDispatchUpOrDownKeyPressEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onkeypress &&"
- " typeof window.chrome.embeddedSearch.searchBox.onkeypress =="
- " 'function') {"
- " for (var i = 0; i < %d; ++i)"
- " window.chrome.embeddedSearch.searchBox.onkeypress({keyCode: %d});"
- " true;"
- "}";
-
-// Takes one printf-style replaceable value: key_code.
-static const char kDispatchEscKeyPressEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onkeypress &&"
- " typeof window.chrome.embeddedSearch.searchBox.onkeypress =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onkeypress({keyCode: %d});"
- " true;"
- "}";
-
-static const char kDispatchKeyCaptureChangeScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onkeycapturechange &&"
- " typeof window.chrome.embeddedSearch.searchBox.onkeycapturechange =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onkeycapturechange();"
- " true;"
- "}";
-
-static const char kDispatchThemeChangeEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.newTabPage &&"
- " window.chrome.embeddedSearch.newTabPage.onthemechange &&"
- " typeof window.chrome.embeddedSearch.newTabPage.onthemechange =="
- " 'function') {"
- " window.chrome.embeddedSearch.newTabPage.onthemechange();"
- " true;"
- "}";
-
-static const char kDispatchMarginChangeEventScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.searchBox &&"
- " window.chrome.embeddedSearch.searchBox.onmarginchange &&"
- " typeof window.chrome.embeddedSearch.searchBox.onmarginchange =="
- " 'function') {"
- " window.chrome.embeddedSearch.searchBox.onmarginchange();"
- " true;"
- "}";
-
-static const char kDispatchMostVisitedChangedScript[] =
- "if (window.chrome &&"
- " window.chrome.embeddedSearch &&"
- " window.chrome.embeddedSearch.newTabPage &&"
- " window.chrome.embeddedSearch.newTabPage.onmostvisitedchange &&"
- " typeof window.chrome.embeddedSearch.newTabPage.onmostvisitedchange =="
- " 'function') {"
- " window.chrome.embeddedSearch.newTabPage.onmostvisitedchange();"
- " true;"
- "}";
-
-// ----------------------------------------------------------------------------
+// SearchBoxExtensionWrapper --------------------------------------------------
class SearchBoxExtensionWrapper : public v8::Extension {
public:
explicit SearchBoxExtensionWrapper(const base::StringPiece& code);
- // Allows v8's javascript code to call the native functions defined
- // in this class for window.chrome.
+ // Allows v8's JavaScript code to call the native functions defined in this
+ // class for window.chrome.searchBox.
virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
v8::Handle<v8::String> name) OVERRIDE;
- // Helper function to find the RenderView. May return NULL.
- static content::RenderView* GetRenderView();
-
- // Deletes a Most Visited item.
- static v8::Handle<v8::Value> DeleteMostVisitedItem(const v8::Arguments& args);
-
- // Gets the value of the user's search query.
+ // Gets the user's search query.
static v8::Handle<v8::Value> GetQuery(const v8::Arguments& args);
- // Gets whether the |value| should be considered final -- as opposed to a
- // partial match. This may be set if the user clicks a suggestion, presses
+ // Gets whether the search query should be considered final -- as opposed to
+ // a partial match. This may be set if the user clicks a suggestion, presses
// forward delete, or in other cases where Chrome overrides.
static v8::Handle<v8::Value> GetVerbatim(const v8::Arguments& args);
- // Gets the start of the selection in the search box.
+ // Gets the start of the selection in the searchbox.
static v8::Handle<v8::Value> GetSelectionStart(const v8::Arguments& args);
- // Gets the end of the selection in the search box.
+ // Gets the end of the selection in the searchbox.
static v8::Handle<v8::Value> GetSelectionEnd(const v8::Arguments& args);
- // Gets the x coordinate (relative to |window|) of the left edge of the
- // region of the search box that overlaps the window.
+ // Gets the x coordinate (relative to the window) of the left edge of the
+ // region of the searchbox popup that overlaps the window.
static v8::Handle<v8::Value> GetX(const v8::Arguments& args);
- // Gets the y coordinate (relative to |window|) of the right edge of the
- // region of the search box that overlaps the window.
+ // Gets the y coordinate (relative to the window) of the right edge of the
+ // region of the searchbox popup that overlaps the window.
static v8::Handle<v8::Value> GetY(const v8::Arguments& args);
- // Gets the width of the region of the search box that overlaps the window,
- // i.e., the width of the omnibox.
+ // Gets the width of the searchbox popup region that overlaps the window.
static v8::Handle<v8::Value> GetWidth(const v8::Arguments& args);
- // Gets the height of the region of the search box that overlaps the window.
+ // Gets the height of the searchbox popup region that overlaps the window.
static v8::Handle<v8::Value> GetHeight(const v8::Arguments& args);
- // Gets Most Visited Items.
- static v8::Handle<v8::Value> GetMostVisitedItems(const v8::Arguments& args);
-
- // Gets the start-edge margin to use with extended Instant.
- static v8::Handle<v8::Value> GetStartMargin(const v8::Arguments& args);
-
- // Returns true if the Searchbox itself is oriented right-to-left.
- static v8::Handle<v8::Value> GetRightToLeft(const v8::Arguments& args);
-
- // Gets the autocomplete results from search box.
- static v8::Handle<v8::Value> GetAutocompleteResults(
- const v8::Arguments& args);
-
- // Gets whether to display Instant results.
- static v8::Handle<v8::Value> GetDisplayInstantResults(
- const v8::Arguments& args);
-
- // Gets the background info of the theme currently adopted by browser.
- // Call only when overlay is showing NTP page.
- static v8::Handle<v8::Value> GetThemeBackgroundInfo(
- const v8::Arguments& args);
-
- // Gets whether the browser is capturing key strokes.
- static v8::Handle<v8::Value> IsKeyCaptureEnabled(const v8::Arguments& args);
-
- // Gets the font family of the text in the omnibox.
- static v8::Handle<v8::Value> GetFont(const v8::Arguments& args);
-
- // Gets the font size of the text in the omnibox.
- static v8::Handle<v8::Value> GetFontSize(const v8::Arguments& args);
-
- // Navigates the window to a URL represented by either a URL string or a
- // restricted ID.
- static v8::Handle<v8::Value> NavigateContentWindow(const v8::Arguments& args);
-
- // Sets ordered suggestions. Valid for current |value|.
- static v8::Handle<v8::Value> SetSuggestions(const v8::Arguments& args);
-
- // Sets the text to be autocompleted into the search box.
- static v8::Handle<v8::Value> SetQuerySuggestion(const v8::Arguments& args);
-
- // Like |SetQuerySuggestion| but uses a restricted ID to identify the text.
- static v8::Handle<v8::Value> SetQuerySuggestionFromAutocompleteResult(
- const v8::Arguments& args);
-
- // Sets the search box text, completely replacing what the user typed.
- static v8::Handle<v8::Value> SetQuery(const v8::Arguments& args);
-
- // Like |SetQuery| but uses a restricted ID to identify the text.
- static v8::Handle<v8::Value> SetQueryFromAutocompleteResult(
- const v8::Arguments& args);
-
- // Requests the overlay be shown with the specified contents and height.
- static v8::Handle<v8::Value> ShowOverlay(const v8::Arguments& args);
-
- // Sets the focus to the omnibox.
- static v8::Handle<v8::Value> FocusOmnibox(const v8::Arguments& args);
-
- // Start capturing user key strokes.
- static v8::Handle<v8::Value> StartCapturingKeyStrokes(
- const v8::Arguments& args);
-
- // Stop capturing user key strokes.
- static v8::Handle<v8::Value> StopCapturingKeyStrokes(
- const v8::Arguments& args);
-
- // Undoes the deletion of all Most Visited itens.
- static v8::Handle<v8::Value> UndoAllMostVisitedDeletions(
- const v8::Arguments& args);
-
- // Undoes the deletion of a Most Visited item.
- static v8::Handle<v8::Value> UndoMostVisitedDeletion(
- const v8::Arguments& args);
+ // Suggests an autocompletion for the current query.
+ static v8::Handle<v8::Value> SetSuggestion(const v8::Arguments& args);
private:
+ std::map<string16, v8::InvocationCallback> functions_;
+
DISALLOW_COPY_AND_ASSIGN(SearchBoxExtensionWrapper);
};
SearchBoxExtensionWrapper::SearchBoxExtensionWrapper(
const base::StringPiece& code)
: v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) {
+ functions_[ASCIIToUTF16("GetQuery")] = GetQuery;
+ functions_[ASCIIToUTF16("GetVerbatim")] = GetVerbatim;
+ functions_[ASCIIToUTF16("GetSelectionStart")] = GetSelectionStart;
+ functions_[ASCIIToUTF16("GetSelectionEnd")] = GetSelectionEnd;
+ functions_[ASCIIToUTF16("GetX")] = GetX;
+ functions_[ASCIIToUTF16("GetY")] = GetY;
+ functions_[ASCIIToUTF16("GetWidth")] = GetWidth;
+ functions_[ASCIIToUTF16("GetHeight")] = GetHeight;
+ functions_[ASCIIToUTF16("SetSuggestion")] = SetSuggestion;
}
v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction(
v8::Handle<v8::String> name) {
- if (name->Equals(v8::String::New("DeleteMostVisitedItem")))
- return v8::FunctionTemplate::New(DeleteMostVisitedItem);
- if (name->Equals(v8::String::New("GetQuery")))
- return v8::FunctionTemplate::New(GetQuery);
- if (name->Equals(v8::String::New("GetVerbatim")))
- return v8::FunctionTemplate::New(GetVerbatim);
- if (name->Equals(v8::String::New("GetSelectionStart")))
- return v8::FunctionTemplate::New(GetSelectionStart);
- if (name->Equals(v8::String::New("GetSelectionEnd")))
- return v8::FunctionTemplate::New(GetSelectionEnd);
- if (name->Equals(v8::String::New("GetX")))
- return v8::FunctionTemplate::New(GetX);
- if (name->Equals(v8::String::New("GetY")))
- return v8::FunctionTemplate::New(GetY);
- if (name->Equals(v8::String::New("GetWidth")))
- return v8::FunctionTemplate::New(GetWidth);
- if (name->Equals(v8::String::New("GetHeight")))
- return v8::FunctionTemplate::New(GetHeight);
- if (name->Equals(v8::String::New("GetMostVisitedItems")))
- return v8::FunctionTemplate::New(GetMostVisitedItems);
- if (name->Equals(v8::String::New("GetStartMargin")))
- return v8::FunctionTemplate::New(GetStartMargin);
- if (name->Equals(v8::String::New("GetRightToLeft")))
- return v8::FunctionTemplate::New(GetRightToLeft);
- if (name->Equals(v8::String::New("GetAutocompleteResults")))
- return v8::FunctionTemplate::New(GetAutocompleteResults);
- if (name->Equals(v8::String::New("GetDisplayInstantResults")))
- return v8::FunctionTemplate::New(GetDisplayInstantResults);
- if (name->Equals(v8::String::New("GetThemeBackgroundInfo")))
- return v8::FunctionTemplate::New(GetThemeBackgroundInfo);
- if (name->Equals(v8::String::New("IsKeyCaptureEnabled")))
- return v8::FunctionTemplate::New(IsKeyCaptureEnabled);
- if (name->Equals(v8::String::New("GetFont")))
- return v8::FunctionTemplate::New(GetFont);
- if (name->Equals(v8::String::New("GetFontSize")))
- return v8::FunctionTemplate::New(GetFontSize);
- if (name->Equals(v8::String::New("NavigateContentWindow")))
- return v8::FunctionTemplate::New(NavigateContentWindow);
- if (name->Equals(v8::String::New("SetSuggestions")))
- return v8::FunctionTemplate::New(SetSuggestions);
- if (name->Equals(v8::String::New("SetQuerySuggestion")))
- return v8::FunctionTemplate::New(SetQuerySuggestion);
- if (name->Equals(v8::String::New("SetQuerySuggestionFromAutocompleteResult")))
- return v8::FunctionTemplate::New(SetQuerySuggestionFromAutocompleteResult);
- if (name->Equals(v8::String::New("SetQuery")))
- return v8::FunctionTemplate::New(SetQuery);
- if (name->Equals(v8::String::New("SetQueryFromAutocompleteResult")))
- return v8::FunctionTemplate::New(SetQueryFromAutocompleteResult);
- if (name->Equals(v8::String::New("ShowOverlay")))
- return v8::FunctionTemplate::New(ShowOverlay);
- if (name->Equals(v8::String::New("FocusOmnibox")))
- return v8::FunctionTemplate::New(FocusOmnibox);
- if (name->Equals(v8::String::New("StartCapturingKeyStrokes")))
- return v8::FunctionTemplate::New(StartCapturingKeyStrokes);
- if (name->Equals(v8::String::New("StopCapturingKeyStrokes")))
- return v8::FunctionTemplate::New(StopCapturingKeyStrokes);
- if (name->Equals(v8::String::New("UndoAllMostVisitedDeletions")))
- return v8::FunctionTemplate::New(UndoAllMostVisitedDeletions);
- if (name->Equals(v8::String::New("UndoMostVisitedDeletion")))
- return v8::FunctionTemplate::New(UndoMostVisitedDeletion);
+ std::map<string16, v8::InvocationCallback>::const_iterator iter =
+ functions_.find(V8ValueToUTF16(name));
+ if (iter != functions_.end())
+ return v8::FunctionTemplate::New(iter->second);
return v8::Handle<v8::FunctionTemplate>();
}
// static
-content::RenderView* SearchBoxExtensionWrapper::GetRenderView() {
- WebKit::WebFrame* webframe = WebKit::WebFrame::frameForCurrentContext();
- if (!webframe) return NULL;
-
- WebKit::WebView* webview = webframe->view();
- if (!webview) return NULL; // can happen during closing
-
- return content::RenderView::FromWebView(webview);
-}
-
-// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetQuery(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- DVLOG(1) << render_view << " GetQuery: '"
- << SearchBox::Get(render_view)->query() << "'";
- return UTF16ToV8String(SearchBox::Get(render_view)->query());
+ return UTF16ToV8String(searchbox->query());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- DVLOG(1) << render_view << " GetVerbatim: "
- << SearchBox::Get(render_view)->verbatim();
- return v8::Boolean::New(SearchBox::Get(render_view)->verbatim());
+ return v8::Boolean::New(searchbox->verbatim());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- return v8::Uint32::New(SearchBox::Get(render_view)->selection_start());
+ return v8::Uint32::New(searchbox->selection_start());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionEnd(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- return v8::Uint32::New(SearchBox::Get(render_view)->selection_end());
+ return v8::Uint32::New(searchbox->selection_end());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetX(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().x());
+ return v8::Int32::New(searchbox->GetPopupBounds().x());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetY(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().y());
+ return v8::Int32::New(searchbox->GetPopupBounds().y());
}
// static
v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetWidth(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().width());
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- return v8::Int32::New(SearchBox::Get(render_view)->GetPopupBounds().height());
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetStartMargin(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
- return v8::Int32::New(SearchBox::Get(render_view)->GetStartMargin());
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetRightToLeft(
- const v8::Arguments& args) {
- return v8::Boolean::New(base::i18n::IsRTL());
-}
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetAutocompleteResults(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " GetAutocompleteResults";
- const std::vector<InstantAutocompleteResult>& results =
- SearchBox::Get(render_view)->GetAutocompleteResults();
- size_t results_base = SearchBox::Get(render_view)->results_base();
-
- v8::Handle<v8::Array> results_array = v8::Array::New(results.size());
- for (size_t i = 0; i < results.size(); ++i) {
- v8::Handle<v8::Object> result = v8::Object::New();
- result->Set(v8::String::New("provider"),
- UTF16ToV8String(results[i].provider));
- result->Set(v8::String::New("type"), UTF16ToV8String(results[i].type));
- result->Set(v8::String::New("contents"),
- UTF16ToV8String(results[i].description));
- result->Set(v8::String::New("destination_url"),
- UTF16ToV8String(results[i].destination_url));
- result->Set(v8::String::New("rid"), v8::Uint32::New(results_base + i));
-
- v8::Handle<v8::Object> ranking_data = v8::Object::New();
- ranking_data->Set(v8::String::New("relevance"),
- v8::Int32::New(results[i].relevance));
- result->Set(v8::String::New("rankingData"), ranking_data);
-
- results_array->Set(i, result);
- }
- return results_array;
+ return v8::Int32::New(searchbox->GetPopupBounds().width());
}
// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::IsKeyCaptureEnabled(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- return v8::Boolean::New(SearchBox::Get(render_view)->
- is_key_capture_enabled());
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetDisplayInstantResults(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- bool display_instant_results =
- SearchBox::Get(render_view)->display_instant_results();
- DVLOG(1) << render_view << " "
- << "GetDisplayInstantResults: " << display_instant_results;
- return v8::Boolean::New(display_instant_results);
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " GetThemeBackgroundInfo";
- const ThemeBackgroundInfo& theme_info =
- SearchBox::Get(render_view)->GetThemeBackgroundInfo();
- v8::Handle<v8::Object> info = v8::Object::New();
-
- // The theme background color is in RGBA format "rgba(R,G,B,A)" where R, G and
- // B are between 0 and 255 inclusive, and A is a double between 0 and 1
- // inclusive.
- // This is the CSS "background-color" format.
- // Value is always valid.
- info->Set(v8::String::New("colorRgba"), UTF8ToV8String(
- // Convert the alpha using DoubleToString because StringPrintf will use
- // locale specific formatters (e.g., use , instead of . in German).
- base::StringPrintf(
- kCSSBackgroundColorFormat,
- theme_info.color_r,
- theme_info.color_g,
- theme_info.color_b,
- base::DoubleToString(theme_info.color_a / 255.0).c_str())));
-
- // The theme background image url is of format
- // "-webkit-image-set(url(chrome://theme/IDR_THEME_BACKGROUND?<theme_id>) 1x)"
- // where <theme_id> is the id that identifies the theme.
- // This is the CSS "background-image" format.
- // Value is only valid if there's a custom theme background image.
- if (extensions::Extension::IdIsValid(theme_info.theme_id)) {
- info->Set(v8::String::New("imageUrl"), UTF8ToV8String(
- base::StringPrintf(kCSSBackgroundImageFormat,
- theme_info.theme_id.c_str())));
-
- // The theme background image horizontal alignment is one of "left",
- // "right", "center".
- // This is the horizontal component of the CSS "background-position" format.
- // Value is only valid if |imageUrl| is not empty.
- std::string alignment = kCSSBackgroundPositionCenter;
- if (theme_info.image_horizontal_alignment ==
- THEME_BKGRND_IMAGE_ALIGN_LEFT) {
- alignment = kCSSBackgroundPositionLeft;
- } else if (theme_info.image_horizontal_alignment ==
- THEME_BKGRND_IMAGE_ALIGN_RIGHT) {
- alignment = kCSSBackgroundPositionRight;
- }
- info->Set(v8::String::New("imageHorizontalAlignment"),
- UTF8ToV8String(alignment));
-
- // The theme background image vertical alignment is one of "top", "bottom",
- // "center".
- // This is the vertical component of the CSS "background-position" format.
- // Value is only valid if |image_url| is not empty.
- if (theme_info.image_vertical_alignment == THEME_BKGRND_IMAGE_ALIGN_TOP) {
- alignment = kCSSBackgroundPositionTop;
- } else if (theme_info.image_vertical_alignment ==
- THEME_BKGRND_IMAGE_ALIGN_BOTTOM) {
- alignment = kCSSBackgroundPositionBottom;
- } else {
- alignment = kCSSBackgroundPositionCenter;
- }
- info->Set(v8::String::New("imageVerticalAlignment"),
- UTF8ToV8String(alignment));
-
- // The tiling of the theme background image is one of "no-repeat",
- // "repeat-x", "repeat-y", "repeat".
- // This is the CSS "background-repeat" format.
- // Value is only valid if |image_url| is not empty.
- std::string tiling = kCSSBackgroundRepeatNo;
- switch (theme_info.image_tiling) {
- case THEME_BKGRND_IMAGE_NO_REPEAT:
- tiling = kCSSBackgroundRepeatNo;
- break;
- case THEME_BKGRND_IMAGE_REPEAT_X:
- tiling = kCSSBackgroundRepeatX;
- break;
- case THEME_BKGRND_IMAGE_REPEAT_Y:
- tiling = kCSSBackgroundRepeatY;
- break;
- case THEME_BKGRND_IMAGE_REPEAT:
- tiling = kCSSBackgroundRepeat;
- break;
- }
- info->Set(v8::String::New("imageTiling"), UTF8ToV8String(tiling));
-
- // The theme background image height is only valid if |imageUrl| is valid.
- info->Set(v8::String::New("imageHeight"),
- v8::Int32::New(theme_info.image_height));
- }
-
- return info;
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetFont(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- return UTF16ToV8String(SearchBox::Get(render_view)->omnibox_font());
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetFontSize(
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox) return v8::Undefined();
- return v8::Uint32::New(SearchBox::Get(render_view)->omnibox_font_size());
+ return v8::Int32::New(searchbox->GetPopupBounds().height());
}
// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow(
+v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestion(
const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
-
- GURL destination_url;
- content::PageTransition transition = content::PAGE_TRANSITION_TYPED;
- if (args[0]->IsNumber()) {
- const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
- GetAutocompleteResultWithId(args[0]->Uint32Value());
- if (result) {
- destination_url = GURL(result->destination_url);
- transition = result->transition;
- }
- } else {
- destination_url = GURL(V8ValueToUTF16(args[0]));
- }
-
- // Navigate the main frame.
- if (destination_url.is_valid()) {
- WindowOpenDisposition disposition = CURRENT_TAB;
- if (args[1]->Uint32Value() == 2)
- disposition = NEW_BACKGROUND_TAB;
- SearchBox::Get(render_view)->NavigateToURL(
- destination_url, transition, disposition);
- }
- return v8::Undefined();
-}
+ SearchBox* searchbox = GetSearchBox();
+ if (!searchbox || !args.Length()) return v8::Undefined();
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
+ InstantSuggestion suggestion;
- DVLOG(1) << render_view << " SetSuggestions";
v8::Handle<v8::Object> suggestion_json = args[0]->ToObject();
- InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
- InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
- v8::Handle<v8::Value> complete_value =
- suggestion_json->Get(v8::String::New("complete_behavior"));
- 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("replace"))) {
- behavior = INSTANT_COMPLETE_REPLACE;
- }
-
- std::vector<InstantSuggestion> suggestions;
-
v8::Handle<v8::Value> suggestions_field =
suggestion_json->Get(v8::String::New("suggestions"));
if (suggestions_field->IsArray()) {
v8::Handle<v8::Array> suggestions_array = suggestions_field.As<v8::Array>();
- for (size_t i = 0; i < suggestions_array->Length(); i++) {
- string16 text = V8ValueToUTF16(
- suggestions_array->Get(i)->ToObject()->Get(v8::String::New("value")));
- suggestions.push_back(InstantSuggestion(text, behavior, type));
+ if (suggestions_array->Length() > 0) {
+ suggestion.text = V8ValueToUTF16(
+ suggestions_array->Get(0)->ToObject()->Get(v8::String::New("value")));
}
}
- SearchBox::Get(render_view)->SetSuggestions(suggestions);
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuerySuggestion(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || args.Length() < 2) return v8::Undefined();
-
- DVLOG(1) << render_view << " SetQuerySuggestion";
- string16 text = V8ValueToUTF16(args[0]);
- InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
- InstantSuggestionType type = INSTANT_SUGGESTION_URL;
-
- if (args[1]->Uint32Value() == 2) {
- behavior = INSTANT_COMPLETE_NEVER;
- type = INSTANT_SUGGESTION_SEARCH;
- }
-
- std::vector<InstantSuggestion> suggestions;
- suggestions.push_back(InstantSuggestion(text, behavior, type));
- SearchBox::Get(render_view)->SetSuggestions(suggestions);
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value>
- SearchBoxExtensionWrapper::SetQuerySuggestionFromAutocompleteResult(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
-
- DVLOG(1) << render_view << " SetQuerySuggestionFromAutocompleteResult";
- const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
- GetAutocompleteResultWithId(args[0]->Uint32Value());
- if (!result) return v8::Undefined();
-
- // We only support selecting autocomplete results that are URLs.
- string16 text = result->destination_url;
- InstantCompleteBehavior behavior = INSTANT_COMPLETE_NOW;
- InstantSuggestionType type = INSTANT_SUGGESTION_URL;
-
- std::vector<InstantSuggestion> suggestions;
- suggestions.push_back(InstantSuggestion(text, behavior, type));
- SearchBox::Get(render_view)->SetSuggestions(suggestions);
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetQuery(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || args.Length() < 2) return v8::Undefined();
-
- DVLOG(1) << render_view << " SetQuery";
- string16 text = V8ValueToUTF16(args[0]);
- InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
- InstantSuggestionType type = INSTANT_SUGGESTION_SEARCH;
-
- if (args[1]->Uint32Value() == 1)
- type = INSTANT_SUGGESTION_URL;
-
- std::vector<InstantSuggestion> suggestions;
- suggestions.push_back(InstantSuggestion(text, behavior, type));
- SearchBox::Get(render_view)->SetSuggestions(suggestions);
-
- return v8::Undefined();
-}
-
-v8::Handle<v8::Value>
- SearchBoxExtensionWrapper::SetQueryFromAutocompleteResult(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
-
- DVLOG(1) << render_view << " SetQueryFromAutocompleteResult";
- const InstantAutocompleteResult* result = SearchBox::Get(render_view)->
- GetAutocompleteResultWithId(args[0]->Uint32Value());
- if (!result) return v8::Undefined();
-
- // We only support selecting autocomplete results that are URLs.
- string16 text = result->destination_url;
- InstantCompleteBehavior behavior = INSTANT_COMPLETE_REPLACE;
- // TODO(jered): Distinguish between history URLs and search provider
- // navsuggest URLs so that we can do proper accounting on history URLs.
- InstantSuggestionType type = INSTANT_SUGGESTION_URL;
-
- std::vector<InstantSuggestion> suggestions;
- suggestions.push_back(InstantSuggestion(text, behavior, type));
- SearchBox::Get(render_view)->SetSuggestions(suggestions);
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::ShowOverlay(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || args.Length() < 2) return v8::Undefined();
-
- DVLOG(1) << render_view << " ShowOverlay";
- InstantShownReason reason = INSTANT_SHOWN_NOT_SPECIFIED;
- switch (args[0]->Uint32Value()) {
- case 1: reason = INSTANT_SHOWN_CUSTOM_NTP_CONTENT; break;
- case 2: reason = INSTANT_SHOWN_QUERY_SUGGESTIONS; break;
- case 3: reason = INSTANT_SHOWN_ZERO_SUGGESTIONS; break;
- case 4: reason = INSTANT_SHOWN_CLICKED_QUERY_SUGGESTION; break;
- }
-
- int height = 100;
- InstantSizeUnits units = INSTANT_SIZE_PERCENT;
- if (args[1]->IsInt32()) {
- height = args[1]->Int32Value();
- units = INSTANT_SIZE_PIXELS;
- }
-
- SearchBox::Get(render_view)->ShowInstantOverlay(reason, height, units);
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetMostVisitedItems(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " GetMostVisitedItems";
-
- const std::vector<MostVisitedItem>& items =
- SearchBox::Get(render_view)->GetMostVisitedItems();
- v8::Handle<v8::Array> items_array = v8::Array::New(items.size());
- for (size_t i = 0; i < items.size(); ++i) {
-
- const string16 url = UTF8ToUTF16(items[i].url.spec());
- const string16 host = UTF8ToUTF16(items[i].url.host());
- int restrict_id =
- SearchBox::Get(render_view)->UrlToRestrictedId(url);
-
- // We set the "dir" attribute of the title, so that in RTL locales, a LTR
- // title is rendered left-to-right and truncated from the right. For
- // example, the title of http://msdn.microsoft.com/en-us/default.aspx is
- // "MSDN: Microsoft developer network". In RTL locales, in the New Tab
- // page, if the "dir" of this title is not specified, it takes Chrome UI's
- // directionality. So the title will be truncated as "soft developer
- // network". Setting the "dir" attribute as "ltr" renders the truncated
- // title as "MSDN: Microsoft D...". As another example, the title of
- // http://yahoo.com is "Yahoo!". In RTL locales, in the New Tab page, the
- // title will be rendered as "!Yahoo" if its "dir" attribute is not set to
- // "ltr".
- std::string direction;
- if (base::i18n::StringContainsStrongRTLChars(items[i].title))
- direction = kRTLHtmlTextDirection;
- else
- direction = kLTRHtmlTextDirection;
-
- string16 title = items[i].title;
- if (title.empty())
- title = url;
-
- v8::Handle<v8::Object> item = v8::Object::New();
- item->Set(v8::String::New("rid"),
- v8::Int32::New(restrict_id));
- item->Set(v8::String::New("thumbnailUrl"),
- UTF16ToV8String(SearchBox::Get(render_view)->
- GenerateThumbnailUrl(restrict_id)));
- item->Set(v8::String::New("faviconUrl"),
- UTF16ToV8String(SearchBox::Get(render_view)->
- GenerateFaviconUrl(restrict_id)));
- item->Set(v8::String::New("title"),
- UTF16ToV8String(title));
- item->Set(v8::String::New("domain"), UTF16ToV8String(host));
- item->Set(v8::String::New("direction"),
- UTF8ToV8String(direction));
-
- items_array->Set(i, item);
- }
- return items_array;
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::DeleteMostVisitedItem(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
-
- DVLOG(1) << render_view << " DeleteMostVisitedItem";
- SearchBox::Get(render_view)->DeleteMostVisitedItem(args[0]->IntegerValue());
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::UndoMostVisitedDeletion(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view || !args.Length()) return v8::Undefined();
-
- DVLOG(1) << render_view << " UndoMostVisitedDeletion";
- SearchBox::Get(render_view)->UndoMostVisitedDeletion(args[0]->IntegerValue());
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::UndoAllMostVisitedDeletions(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
+ searchbox->SetSuggestion(suggestion);
- DVLOG(1) << render_view << " UndoAllMostVisitedDeletions";
- SearchBox::Get(render_view)->UndoAllMostVisitedDeletions();
return v8::Undefined();
}
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::FocusOmnibox(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " FocusOmnibox";
- SearchBox::Get(render_view)->FocusOmnibox();
-
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::StartCapturingKeyStrokes(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " StartCapturingKeyStrokes";
- SearchBox::Get(render_view)->StartCapturingKeyStrokes();
- return v8::Undefined();
-}
-
-// static
-v8::Handle<v8::Value> SearchBoxExtensionWrapper::StopCapturingKeyStrokes(
- const v8::Arguments& args) {
- content::RenderView* render_view = GetRenderView();
- if (!render_view) return v8::Undefined();
-
- DVLOG(1) << render_view << " StopCapturingKeyStrokes";
- SearchBox::Get(render_view)->StopCapturingKeyStrokes();
- return v8::Undefined();
-}
+// SearchBoxExtension ---------------------------------------------------------
// static
v8::Extension* SearchBoxExtension::Get() {
@@ -1001,76 +269,36 @@ v8::Extension* SearchBoxExtension::Get() {
}
// static
-bool SearchBoxExtension::PageSupportsInstant(WebKit::WebFrame* frame) {
- if (!frame) return false;
+bool SearchBoxExtension::DetermineInstantSupport(
+ content::RenderView* render_view) {
+ WebKit::WebFrame* frame = GetFrame(render_view);
+ if (!frame)
+ return false;
+
v8::HandleScope handle_scope;
v8::Handle<v8::Value> v = frame->executeScriptAndReturnValue(
- WebKit::WebScriptSource(kSupportsInstantScript));
+ WebKit::WebScriptSource(kDetermineInstantSupportScript));
return !v.IsEmpty() && v->BooleanValue();
}
// static
-void SearchBoxExtension::DispatchChange(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchChangeEventScript);
-}
-
-// static
-void SearchBoxExtension::DispatchSubmit(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchSubmitEventScript);
-}
-
-// static
-void SearchBoxExtension::DispatchCancel(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchCancelEventScript);
-}
-
-// static
-void SearchBoxExtension::DispatchResize(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchResizeEventScript);
-}
-
-// static
-void SearchBoxExtension::DispatchOnWindowReady(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchOnWindowReady);
-}
-
-// static
-void SearchBoxExtension::DispatchAutocompleteResults(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchAutocompleteResultsEventScript);
-}
-
-// static
-void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame,
- int count) {
- Dispatch(frame, WebKit::WebString::fromUTF8(
- base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count),
- count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN)));
-}
-
-// static
-void SearchBoxExtension::DispatchEscKeyPress(WebKit::WebFrame* frame) {
- Dispatch(frame, WebKit::WebString::fromUTF8(
- base::StringPrintf(kDispatchEscKeyPressEventScript, ui::VKEY_ESCAPE)));
+void SearchBoxExtension::Change(content::RenderView* render_view) {
+ Dispatch(render_view, kOnChangeScript);
}
// static
-void SearchBoxExtension::DispatchKeyCaptureChange(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchKeyCaptureChangeScript);
+void SearchBoxExtension::Submit(content::RenderView* render_view) {
+ Dispatch(render_view, kOnSubmitScript);
}
// static
-void SearchBoxExtension::DispatchMarginChange(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchMarginChangeEventScript);
+void SearchBoxExtension::Blur(content::RenderView* render_view) {
+ Dispatch(render_view, kOnBlurScript);
}
// static
-void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchThemeChangeEventScript);
+void SearchBoxExtension::PopupBounds(content::RenderView* render_view) {
+ Dispatch(render_view, kOnPopupBoundsScript);
}
-// static
-void SearchBoxExtension::DispatchMostVisitedChanged(
- WebKit::WebFrame* frame) {
- Dispatch(frame, kDispatchMostVisitedChangedScript);
-}
} // namespace extensions_v8

Powered by Google App Engine
This is Rietveld 408576698