Chromium Code Reviews| Index: chrome/renderer/searchbox/searchbox_extension.cc |
| diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc |
| index 54e5e911b75450e21b162d1bd4c96edff2df8d7f..701b2c73b3314e925a50c720ead6ed73ce376ff9 100644 |
| --- a/chrome/renderer/searchbox/searchbox_extension.cc |
| +++ b/chrome/renderer/searchbox/searchbox_extension.cc |
| @@ -136,6 +136,25 @@ static const char kDispatchContextChangeEventScript[] = |
| " true;" |
| "}"; |
| +static const char kDispatchThemeChangeEventScript[] = |
| + "if (window.chrome &&" |
| + " window.chrome.searchBox &&" |
| + " window.chrome.searchBox.onthemechange &&" |
| + " typeof window.chrome.searchBox.onthemechange == 'function') {" |
| + " window.chrome.searchBox.onthemechange();" |
| + " true;" |
| + "}"; |
| + |
| +static const char kDispatchThemeAreaHeightChangeEventScript[] = |
| + "if (window.chrome &&" |
| + " window.chrome.searchBox &&" |
| + " window.chrome.searchBox.onthemeareaheightchange &&" |
| + " typeof window.chrome.searchBox.onthemeareaheightchange ==" |
| + " 'function') {" |
| + " window.chrome.searchBox.onthemeareaheightchange();" |
| + " true;" |
| + "}"; |
| + |
| // ---------------------------------------------------------------------------- |
| class SearchBoxExtensionWrapper : public v8::Extension { |
| @@ -188,6 +207,18 @@ class SearchBoxExtensionWrapper : public v8::Extension { |
| // Gets the current session context. |
| static v8::Handle<v8::Value> GetContext(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 the theme area height that the entire theme background image should |
| + // fill up. |
| + // Call only when overlay is showing NTP page and GetThemeBackgroundInfo |
| + // returns a non-empty image_url and an image_vertical_alignment that is not |
| + // "top". |
| + static v8::Handle<v8::Value> GetThemeAreaHeight(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); |
| @@ -245,6 +276,10 @@ v8::Handle<v8::FunctionTemplate> SearchBoxExtensionWrapper::GetNativeFunction( |
| return v8::FunctionTemplate::New(GetIsFocused); |
| if (name->Equals(v8::String::New("GetContext"))) |
| return v8::FunctionTemplate::New(GetContext); |
| + if (name->Equals(v8::String::New("GetThemeBackgroundInfo"))) |
| + return v8::FunctionTemplate::New(GetThemeBackgroundInfo); |
| + if (name->Equals(v8::String::New("GetThemeAreaHeight"))) |
| + return v8::FunctionTemplate::New(GetThemeAreaHeight); |
| if (name->Equals(v8::String::New("NavigateContentWindow"))) |
| return v8::FunctionTemplate::New(NavigateContentWindow); |
| if (name->Equals(v8::String::New("SetSuggestions"))) |
| @@ -399,6 +434,36 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext( |
| return context; |
| } |
| +v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeBackgroundInfo( |
| + const v8::Arguments& args) { |
| + content::RenderView* render_view = GetRenderView(); |
| + if (!render_view) return v8::Undefined(); |
| + |
| + const ThemeBackgroundInfo& theme_info = |
| + SearchBox::Get(render_view)->GetThemeBackgroundInfo(); |
| + v8::Handle<v8::Object> info = v8::Object::New(); |
| + info->Set(v8::String::New("color_rgba"), |
|
David Black
2012/11/16 00:57:17
These Javascript object properties should use came
kuan
2012/11/16 01:10:03
Done.
|
| + UTF16ToV8String(theme_info.color_rgba)); |
| + info->Set(v8::String::New("image_url"), |
| + UTF16ToV8String(theme_info.image_url)); |
| + info->Set(v8::String::New("image_horizontal_alignment"), |
| + UTF16ToV8String(theme_info.image_horizontal_alignment)); |
| + info->Set(v8::String::New("image_vertical_alignment"), |
| + UTF16ToV8String(theme_info.image_vertical_alignment)); |
| + info->Set(v8::String::New("image_tiling"), |
| + UTF16ToV8String(theme_info.image_tiling)); |
| + return info; |
| +} |
| + |
| + |
| +v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetThemeAreaHeight( |
| + const v8::Arguments& args) { |
| + content::RenderView* render_view = GetRenderView(); |
| + if (!render_view) return v8::Undefined(); |
| + |
| + return v8::Int32::New(SearchBox::Get(render_view)->GetThemeAreaHeight()); |
| +} |
| + |
| // static |
| v8::Handle<v8::Value> SearchBoxExtensionWrapper::NavigateContentWindow( |
| const v8::Arguments& args) { |
| @@ -643,6 +708,17 @@ void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) { |
| } |
| // static |
| +void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { |
| + Dispatch(frame, kDispatchThemeChangeEventScript); |
| +} |
| + |
| +// static |
| +void SearchBoxExtension::DispatchThemeAreaHeightChange( |
| + WebKit::WebFrame* frame) { |
| + Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); |
| +} |
| + |
| +// static |
| v8::Extension* SearchBoxExtension::Get() { |
| return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). |
| GetRawDataResource(IDR_SEARCHBOX_API)); |