| OLD | NEW | 
|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/renderer/searchbox/searchbox_extension.h" | 5 #include "chrome/renderer/searchbox/searchbox_extension.h" | 
| 6 | 6 | 
| 7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" | 
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" | 
| 9 #include "chrome/common/extensions/extension.h" | 9 #include "chrome/common/extensions/extension.h" | 
| 10 #include "chrome/renderer/searchbox/searchbox.h" | 10 #include "chrome/renderer/searchbox/searchbox.h" | 
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 124 static const char kDispatchUpOrDownKeyPressEventScript[] = | 124 static const char kDispatchUpOrDownKeyPressEventScript[] = | 
| 125     "if (window.chrome &&" | 125     "if (window.chrome &&" | 
| 126     "    window.chrome.searchBox &&" | 126     "    window.chrome.searchBox &&" | 
| 127     "    window.chrome.searchBox.onkeypress &&" | 127     "    window.chrome.searchBox.onkeypress &&" | 
| 128     "    typeof window.chrome.searchBox.onkeypress == 'function') {" | 128     "    typeof window.chrome.searchBox.onkeypress == 'function') {" | 
| 129     "  for (var i = 0; i < %d; ++i)" | 129     "  for (var i = 0; i < %d; ++i)" | 
| 130     "    window.chrome.searchBox.onkeypress({keyCode: %d});" | 130     "    window.chrome.searchBox.onkeypress({keyCode: %d});" | 
| 131     "  true;" | 131     "  true;" | 
| 132     "}"; | 132     "}"; | 
| 133 | 133 | 
|  | 134 static const char kDispatchKeyCaptureChangeScript[] = | 
|  | 135     "if (window.chrome &&" | 
|  | 136     "    window.chrome.searchBox &&" | 
|  | 137     "    window.chrome.searchBox.onkeycapturechange &&" | 
|  | 138     "    typeof window.chrome.searchBox.onkeycapturechange == 'function') {" | 
|  | 139     "  window.chrome.searchBox.onkeycapturechange();" | 
|  | 140     "  true;" | 
|  | 141     "}"; | 
|  | 142 | 
| 134 static const char kDispatchContextChangeEventScript[] = | 143 static const char kDispatchContextChangeEventScript[] = | 
| 135     "if (window.chrome &&" | 144     "if (window.chrome &&" | 
| 136     "    window.chrome.searchBox &&" | 145     "    window.chrome.searchBox &&" | 
| 137     "    window.chrome.searchBox.oncontextchange &&" | 146     "    window.chrome.searchBox.oncontextchange &&" | 
| 138     "    typeof window.chrome.searchBox.oncontextchange == 'function') {" | 147     "    typeof window.chrome.searchBox.oncontextchange == 'function') {" | 
| 139     "  window.chrome.searchBox.oncontextchange();" | 148     "  window.chrome.searchBox.oncontextchange();" | 
| 140     "  true;" | 149     "  true;" | 
| 141     "}"; | 150     "}"; | 
| 142 | 151 | 
| 143 static const char kDispatchThemeChangeEventScript[] = | 152 static const char kDispatchThemeChangeEventScript[] = | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 217   static v8::Handle<v8::Value> GetThemeBackgroundInfo( | 226   static v8::Handle<v8::Value> GetThemeBackgroundInfo( | 
| 218       const v8::Arguments& args); | 227       const v8::Arguments& args); | 
| 219 | 228 | 
| 220   // Gets the theme area height that the entire theme background image should | 229   // Gets the theme area height that the entire theme background image should | 
| 221   // fill up. | 230   // fill up. | 
| 222   // Call only when overlay is showing NTP page and GetThemeBackgroundInfo | 231   // Call only when overlay is showing NTP page and GetThemeBackgroundInfo | 
| 223   // returns a non-empty image_url and an image_vertical_alignment that is not | 232   // returns a non-empty image_url and an image_vertical_alignment that is not | 
| 224   // "top". | 233   // "top". | 
| 225   static v8::Handle<v8::Value> GetThemeAreaHeight(const v8::Arguments& args); | 234   static v8::Handle<v8::Value> GetThemeAreaHeight(const v8::Arguments& args); | 
| 226 | 235 | 
|  | 236   // Gets whether the browser is capturing key strokes. | 
|  | 237   static v8::Handle<v8::Value> IsKeyCaptureEnabled(const v8::Arguments& args); | 
|  | 238 | 
| 227   // Navigates the window to a URL represented by either a URL string or a | 239   // Navigates the window to a URL represented by either a URL string or a | 
| 228   // restricted ID. | 240   // restricted ID. | 
| 229   static v8::Handle<v8::Value> NavigateContentWindow(const v8::Arguments& args); | 241   static v8::Handle<v8::Value> NavigateContentWindow(const v8::Arguments& args); | 
| 230 | 242 | 
| 231   // Sets ordered suggestions. Valid for current |value|. | 243   // Sets ordered suggestions. Valid for current |value|. | 
| 232   static v8::Handle<v8::Value> SetSuggestions(const v8::Arguments& args); | 244   static v8::Handle<v8::Value> SetSuggestions(const v8::Arguments& args); | 
| 233 | 245 | 
| 234   // Sets the text to be autocompleted into the search box. | 246   // Sets the text to be autocompleted into the search box. | 
| 235   static v8::Handle<v8::Value> SetQuerySuggestion(const v8::Arguments& args); | 247   static v8::Handle<v8::Value> SetQuerySuggestion(const v8::Arguments& args); | 
| 236 | 248 | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 286   if (name->Equals(v8::String::New("GetAutocompleteResults"))) | 298   if (name->Equals(v8::String::New("GetAutocompleteResults"))) | 
| 287     return v8::FunctionTemplate::New(GetAutocompleteResults); | 299     return v8::FunctionTemplate::New(GetAutocompleteResults); | 
| 288   if (name->Equals(v8::String::New("GetContext"))) | 300   if (name->Equals(v8::String::New("GetContext"))) | 
| 289     return v8::FunctionTemplate::New(GetContext); | 301     return v8::FunctionTemplate::New(GetContext); | 
| 290   if (name->Equals(v8::String::New("GetDisplayInstantResults"))) | 302   if (name->Equals(v8::String::New("GetDisplayInstantResults"))) | 
| 291     return v8::FunctionTemplate::New(GetDisplayInstantResults); | 303     return v8::FunctionTemplate::New(GetDisplayInstantResults); | 
| 292   if (name->Equals(v8::String::New("GetThemeBackgroundInfo"))) | 304   if (name->Equals(v8::String::New("GetThemeBackgroundInfo"))) | 
| 293     return v8::FunctionTemplate::New(GetThemeBackgroundInfo); | 305     return v8::FunctionTemplate::New(GetThemeBackgroundInfo); | 
| 294   if (name->Equals(v8::String::New("GetThemeAreaHeight"))) | 306   if (name->Equals(v8::String::New("GetThemeAreaHeight"))) | 
| 295     return v8::FunctionTemplate::New(GetThemeAreaHeight); | 307     return v8::FunctionTemplate::New(GetThemeAreaHeight); | 
|  | 308   if (name->Equals(v8::String::New("IsKeyCaptureEnabled"))) | 
|  | 309     return v8::FunctionTemplate::New(IsKeyCaptureEnabled); | 
| 296   if (name->Equals(v8::String::New("NavigateContentWindow"))) | 310   if (name->Equals(v8::String::New("NavigateContentWindow"))) | 
| 297     return v8::FunctionTemplate::New(NavigateContentWindow); | 311     return v8::FunctionTemplate::New(NavigateContentWindow); | 
| 298   if (name->Equals(v8::String::New("SetSuggestions"))) | 312   if (name->Equals(v8::String::New("SetSuggestions"))) | 
| 299     return v8::FunctionTemplate::New(SetSuggestions); | 313     return v8::FunctionTemplate::New(SetSuggestions); | 
| 300   if (name->Equals(v8::String::New("SetQuerySuggestion"))) | 314   if (name->Equals(v8::String::New("SetQuerySuggestion"))) | 
| 301     return v8::FunctionTemplate::New(SetQuerySuggestion); | 315     return v8::FunctionTemplate::New(SetQuerySuggestion); | 
| 302   if (name->Equals(v8::String::New("SetQuerySuggestionFromAutocompleteResult"))) | 316   if (name->Equals(v8::String::New("SetQuerySuggestionFromAutocompleteResult"))) | 
| 303     return v8::FunctionTemplate::New(SetQuerySuggestionFromAutocompleteResult); | 317     return v8::FunctionTemplate::New(SetQuerySuggestionFromAutocompleteResult); | 
| 304   if (name->Equals(v8::String::New("SetQuery"))) | 318   if (name->Equals(v8::String::New("SetQuery"))) | 
| 305     return v8::FunctionTemplate::New(SetQuery); | 319     return v8::FunctionTemplate::New(SetQuery); | 
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 428     ranking_data->Set(v8::String::New("relevance"), | 442     ranking_data->Set(v8::String::New("relevance"), | 
| 429                       v8::Int32::New(results[i].relevance)); | 443                       v8::Int32::New(results[i].relevance)); | 
| 430     result->Set(v8::String::New("rankingData"), ranking_data); | 444     result->Set(v8::String::New("rankingData"), ranking_data); | 
| 431 | 445 | 
| 432     results_array->Set(i, result); | 446     results_array->Set(i, result); | 
| 433   } | 447   } | 
| 434   return results_array; | 448   return results_array; | 
| 435 } | 449 } | 
| 436 | 450 | 
| 437 // static | 451 // static | 
|  | 452 v8::Handle<v8::Value> SearchBoxExtensionWrapper::IsKeyCaptureEnabled( | 
|  | 453     const v8::Arguments& args) { | 
|  | 454   content::RenderView* render_view = GetRenderView(); | 
|  | 455   if (!render_view) return v8::Undefined(); | 
|  | 456 | 
|  | 457   return v8::Boolean::New(SearchBox::Get(render_view)-> | 
|  | 458                           is_key_capture_enabled()); | 
|  | 459 } | 
|  | 460 | 
|  | 461 // static | 
| 438 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext( | 462 v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetContext( | 
| 439     const v8::Arguments& args) { | 463     const v8::Arguments& args) { | 
| 440   content::RenderView* render_view = GetRenderView(); | 464   content::RenderView* render_view = GetRenderView(); | 
| 441   if (!render_view) return v8::Undefined(); | 465   if (!render_view) return v8::Undefined(); | 
| 442 | 466 | 
| 443   const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode(); | 467   const chrome::search::Mode& mode = SearchBox::Get(render_view)->mode(); | 
| 444   DVLOG(1) << render_view << " GetContext: " << mode.origin << ":" << mode.mode; | 468   DVLOG(1) << render_view << " GetContext: " << mode.origin << ":" << mode.mode; | 
| 445   v8::Handle<v8::Object> context = v8::Object::New(); | 469   v8::Handle<v8::Object> context = v8::Object::New(); | 
| 446   context->Set(v8::String::New("isNewTabPage"), | 470   context->Set(v8::String::New("isNewTabPage"), | 
| 447                v8::Boolean::New(mode.is_ntp())); | 471                v8::Boolean::New(mode.is_ntp())); | 
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 807 | 831 | 
| 808 // static | 832 // static | 
| 809 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame, | 833 void SearchBoxExtension::DispatchUpOrDownKeyPress(WebKit::WebFrame* frame, | 
| 810                                                   int count) { | 834                                                   int count) { | 
| 811   Dispatch(frame, WebKit::WebString::fromUTF8( | 835   Dispatch(frame, WebKit::WebString::fromUTF8( | 
| 812       base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count), | 836       base::StringPrintf(kDispatchUpOrDownKeyPressEventScript, abs(count), | 
| 813                          count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN))); | 837                          count < 0 ? ui::VKEY_UP : ui::VKEY_DOWN))); | 
| 814 } | 838 } | 
| 815 | 839 | 
| 816 // static | 840 // static | 
|  | 841 void SearchBoxExtension::DispatchKeyCaptureChange(WebKit::WebFrame* frame) { | 
|  | 842   Dispatch(frame, kDispatchKeyCaptureChangeScript); | 
|  | 843 } | 
|  | 844 | 
|  | 845 // static | 
| 817 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) { | 846 void SearchBoxExtension::DispatchContextChange(WebKit::WebFrame* frame) { | 
| 818   Dispatch(frame, kDispatchContextChangeEventScript); | 847   Dispatch(frame, kDispatchContextChangeEventScript); | 
| 819 } | 848 } | 
| 820 | 849 | 
| 821 // static | 850 // static | 
| 822 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { | 851 void SearchBoxExtension::DispatchThemeChange(WebKit::WebFrame* frame) { | 
| 823   Dispatch(frame, kDispatchThemeChangeEventScript); | 852   Dispatch(frame, kDispatchThemeChangeEventScript); | 
| 824 } | 853 } | 
| 825 | 854 | 
| 826 // static | 855 // static | 
| 827 void SearchBoxExtension::DispatchThemeAreaHeightChange( | 856 void SearchBoxExtension::DispatchThemeAreaHeightChange( | 
| 828     WebKit::WebFrame* frame) { | 857     WebKit::WebFrame* frame) { | 
| 829   Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); | 858   Dispatch(frame, kDispatchThemeAreaHeightChangeEventScript); | 
| 830 } | 859 } | 
| 831 | 860 | 
| 832 // static | 861 // static | 
| 833 v8::Extension* SearchBoxExtension::Get() { | 862 v8::Extension* SearchBoxExtension::Get() { | 
| 834   return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). | 863   return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). | 
| 835       GetRawDataResource(IDR_SEARCHBOX_API)); | 864       GetRawDataResource(IDR_SEARCHBOX_API)); | 
| 836 } | 865 } | 
| 837 | 866 | 
| 838 }  // namespace extensions_v8 | 867 }  // namespace extensions_v8 | 
| OLD | NEW | 
|---|