| 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/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
| 9 #include "base/json/string_escape.h" | 9 #include "base/json/string_escape.h" |
| 10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 "if (window.chrome &&" | 397 "if (window.chrome &&" |
| 398 " window.chrome.embeddedSearch &&" | 398 " window.chrome.embeddedSearch &&" |
| 399 " window.chrome.embeddedSearch.newTabPage &&" | 399 " window.chrome.embeddedSearch.newTabPage &&" |
| 400 " window.chrome.embeddedSearch.newTabPage.onthemechange &&" | 400 " window.chrome.embeddedSearch.newTabPage.onthemechange &&" |
| 401 " typeof window.chrome.embeddedSearch.newTabPage.onthemechange ==" | 401 " typeof window.chrome.embeddedSearch.newTabPage.onthemechange ==" |
| 402 " 'function') {" | 402 " 'function') {" |
| 403 " window.chrome.embeddedSearch.newTabPage.onthemechange();" | 403 " window.chrome.embeddedSearch.newTabPage.onthemechange();" |
| 404 " true;" | 404 " true;" |
| 405 "}"; | 405 "}"; |
| 406 | 406 |
| 407 static const char kDispatchToggleVoiceSearchScript[] = | |
| 408 "if (window.chrome &&" | |
| 409 " window.chrome.embeddedSearch &&" | |
| 410 " window.chrome.embeddedSearch.searchBox &&" | |
| 411 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch &&" | |
| 412 " typeof window.chrome.embeddedSearch.searchBox.ontogglevoicesearch ==" | |
| 413 " 'function') {" | |
| 414 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch();" | |
| 415 " true;" | |
| 416 "}"; | |
| 417 | |
| 418 // ---------------------------------------------------------------------------- | 407 // ---------------------------------------------------------------------------- |
| 419 | 408 |
| 420 class SearchBoxExtensionWrapper : public v8::Extension { | 409 class SearchBoxExtensionWrapper : public v8::Extension { |
| 421 public: | 410 public: |
| 422 explicit SearchBoxExtensionWrapper(const base::StringPiece& code); | 411 explicit SearchBoxExtensionWrapper(const base::StringPiece& code); |
| 423 | 412 |
| 424 // Allows v8's javascript code to call the native functions defined | 413 // Allows v8's javascript code to call the native functions defined |
| 425 // in this class for window.chrome. | 414 // in this class for window.chrome. |
| 426 v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( | 415 v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
| 427 v8::Isolate*, | 416 v8::Isolate*, |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 const v8::FunctionCallbackInfo<v8::Value>& args); | 497 const v8::FunctionCallbackInfo<v8::Value>& args); |
| 509 | 498 |
| 510 // Navigates the window to a URL represented by either a URL string or a | 499 // Navigates the window to a URL represented by either a URL string or a |
| 511 // restricted ID. | 500 // restricted ID. |
| 512 static void NavigateContentWindow( | 501 static void NavigateContentWindow( |
| 513 const v8::FunctionCallbackInfo<v8::Value>& args); | 502 const v8::FunctionCallbackInfo<v8::Value>& args); |
| 514 | 503 |
| 515 // Pastes provided value or clipboard's content into the omnibox. | 504 // Pastes provided value or clipboard's content into the omnibox. |
| 516 static void Paste(const v8::FunctionCallbackInfo<v8::Value>& args); | 505 static void Paste(const v8::FunctionCallbackInfo<v8::Value>& args); |
| 517 | 506 |
| 518 // Indicates whether the page supports voice search. | |
| 519 static void SetVoiceSearchSupported( | |
| 520 const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 521 | |
| 522 // Start capturing user key strokes. | 507 // Start capturing user key strokes. |
| 523 static void StartCapturingKeyStrokes( | 508 static void StartCapturingKeyStrokes( |
| 524 const v8::FunctionCallbackInfo<v8::Value>& args); | 509 const v8::FunctionCallbackInfo<v8::Value>& args); |
| 525 | 510 |
| 526 // Stop capturing user key strokes. | 511 // Stop capturing user key strokes. |
| 527 static void StopCapturingKeyStrokes( | 512 static void StopCapturingKeyStrokes( |
| 528 const v8::FunctionCallbackInfo<v8::Value>& args); | 513 const v8::FunctionCallbackInfo<v8::Value>& args); |
| 529 | 514 |
| 530 // Undoes the deletion of all Most Visited itens. | 515 // Undoes the deletion of all Most Visited itens. |
| 531 static void UndoAllMostVisitedDeletions( | 516 static void UndoAllMostVisitedDeletions( |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 // static | 605 // static |
| 621 void SearchBoxExtension::DispatchSuggestionChange(blink::WebFrame* frame) { | 606 void SearchBoxExtension::DispatchSuggestionChange(blink::WebFrame* frame) { |
| 622 Dispatch(frame, kDispatchSuggestionChangeEventScript); | 607 Dispatch(frame, kDispatchSuggestionChangeEventScript); |
| 623 } | 608 } |
| 624 | 609 |
| 625 // static | 610 // static |
| 626 void SearchBoxExtension::DispatchThemeChange(blink::WebFrame* frame) { | 611 void SearchBoxExtension::DispatchThemeChange(blink::WebFrame* frame) { |
| 627 Dispatch(frame, kDispatchThemeChangeEventScript); | 612 Dispatch(frame, kDispatchThemeChangeEventScript); |
| 628 } | 613 } |
| 629 | 614 |
| 630 // static | |
| 631 void SearchBoxExtension::DispatchToggleVoiceSearch( | |
| 632 blink::WebFrame* frame) { | |
| 633 Dispatch(frame, kDispatchToggleVoiceSearchScript); | |
| 634 } | |
| 635 | |
| 636 SearchBoxExtensionWrapper::SearchBoxExtensionWrapper( | 615 SearchBoxExtensionWrapper::SearchBoxExtensionWrapper( |
| 637 const base::StringPiece& code) | 616 const base::StringPiece& code) |
| 638 : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) { | 617 : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) { |
| 639 } | 618 } |
| 640 | 619 |
| 641 v8::Local<v8::FunctionTemplate> | 620 v8::Local<v8::FunctionTemplate> |
| 642 SearchBoxExtensionWrapper::GetNativeFunctionTemplate( | 621 SearchBoxExtensionWrapper::GetNativeFunctionTemplate( |
| 643 v8::Isolate* isolate, | 622 v8::Isolate* isolate, |
| 644 v8::Local<v8::String> name) { | 623 v8::Local<v8::String> name) { |
| 645 if (name->Equals( | 624 if (name->Equals( |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 return v8::FunctionTemplate::New(isolate, LogMostVisitedImpression); | 664 return v8::FunctionTemplate::New(isolate, LogMostVisitedImpression); |
| 686 } | 665 } |
| 687 if (name->Equals( | 666 if (name->Equals( |
| 688 v8::String::NewFromUtf8(isolate, "LogMostVisitedNavigation"))) { | 667 v8::String::NewFromUtf8(isolate, "LogMostVisitedNavigation"))) { |
| 689 return v8::FunctionTemplate::New(isolate, LogMostVisitedNavigation); | 668 return v8::FunctionTemplate::New(isolate, LogMostVisitedNavigation); |
| 690 } | 669 } |
| 691 if (name->Equals(v8::String::NewFromUtf8(isolate, "NavigateContentWindow"))) | 670 if (name->Equals(v8::String::NewFromUtf8(isolate, "NavigateContentWindow"))) |
| 692 return v8::FunctionTemplate::New(isolate, NavigateContentWindow); | 671 return v8::FunctionTemplate::New(isolate, NavigateContentWindow); |
| 693 if (name->Equals(v8::String::NewFromUtf8(isolate, "Paste"))) | 672 if (name->Equals(v8::String::NewFromUtf8(isolate, "Paste"))) |
| 694 return v8::FunctionTemplate::New(isolate, Paste); | 673 return v8::FunctionTemplate::New(isolate, Paste); |
| 695 if (name->Equals(v8::String::NewFromUtf8(isolate, "SetVoiceSearchSupported"))) | |
| 696 return v8::FunctionTemplate::New(isolate, SetVoiceSearchSupported); | |
| 697 if (name->Equals( | 674 if (name->Equals( |
| 698 v8::String::NewFromUtf8(isolate, "StartCapturingKeyStrokes"))) | 675 v8::String::NewFromUtf8(isolate, "StartCapturingKeyStrokes"))) |
| 699 return v8::FunctionTemplate::New(isolate, StartCapturingKeyStrokes); | 676 return v8::FunctionTemplate::New(isolate, StartCapturingKeyStrokes); |
| 700 if (name->Equals(v8::String::NewFromUtf8(isolate, "StopCapturingKeyStrokes"))) | 677 if (name->Equals(v8::String::NewFromUtf8(isolate, "StopCapturingKeyStrokes"))) |
| 701 return v8::FunctionTemplate::New(isolate, StopCapturingKeyStrokes); | 678 return v8::FunctionTemplate::New(isolate, StopCapturingKeyStrokes); |
| 702 if (name->Equals( | 679 if (name->Equals( |
| 703 v8::String::NewFromUtf8(isolate, "UndoAllMostVisitedDeletions"))) | 680 v8::String::NewFromUtf8(isolate, "UndoAllMostVisitedDeletions"))) |
| 704 return v8::FunctionTemplate::New(isolate, UndoAllMostVisitedDeletions); | 681 return v8::FunctionTemplate::New(isolate, UndoAllMostVisitedDeletions); |
| 705 if (name->Equals(v8::String::NewFromUtf8(isolate, "UndoMostVisitedDeletion"))) | 682 if (name->Equals(v8::String::NewFromUtf8(isolate, "UndoMostVisitedDeletion"))) |
| 706 return v8::FunctionTemplate::New(isolate, UndoMostVisitedDeletion); | 683 return v8::FunctionTemplate::New(isolate, UndoMostVisitedDeletion); |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1253 void SearchBoxExtensionWrapper::StopCapturingKeyStrokes( | 1230 void SearchBoxExtensionWrapper::StopCapturingKeyStrokes( |
| 1254 const v8::FunctionCallbackInfo<v8::Value>& args) { | 1231 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 1255 content::RenderView* render_view = GetRenderView(); | 1232 content::RenderView* render_view = GetRenderView(); |
| 1256 if (!render_view) return; | 1233 if (!render_view) return; |
| 1257 | 1234 |
| 1258 DVLOG(1) << render_view << " StopCapturingKeyStrokes"; | 1235 DVLOG(1) << render_view << " StopCapturingKeyStrokes"; |
| 1259 SearchBox::Get(render_view)->StopCapturingKeyStrokes(); | 1236 SearchBox::Get(render_view)->StopCapturingKeyStrokes(); |
| 1260 } | 1237 } |
| 1261 | 1238 |
| 1262 // static | 1239 // static |
| 1263 void SearchBoxExtensionWrapper::SetVoiceSearchSupported( | |
| 1264 const v8::FunctionCallbackInfo<v8::Value>& args) { | |
| 1265 content::RenderView* render_view = GetRenderView(); | |
| 1266 if (!render_view) { | |
| 1267 return; | |
| 1268 } | |
| 1269 if (!args.Length()) { | |
| 1270 ThrowInvalidParameters(args); | |
| 1271 return; | |
| 1272 } | |
| 1273 | |
| 1274 DVLOG(1) << render_view << " SetVoiceSearchSupported"; | |
| 1275 SearchBox::Get(render_view)->SetVoiceSearchSupported(args[0]->BooleanValue()); | |
| 1276 } | |
| 1277 | |
| 1278 // static | |
| 1279 void SearchBoxExtensionWrapper::UndoAllMostVisitedDeletions( | 1240 void SearchBoxExtensionWrapper::UndoAllMostVisitedDeletions( |
| 1280 const v8::FunctionCallbackInfo<v8::Value>& args) { | 1241 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 1281 content::RenderView* render_view = GetRenderView(); | 1242 content::RenderView* render_view = GetRenderView(); |
| 1282 if (!render_view) return; | 1243 if (!render_view) return; |
| 1283 | 1244 |
| 1284 DVLOG(1) << render_view << " UndoAllMostVisitedDeletions"; | 1245 DVLOG(1) << render_view << " UndoAllMostVisitedDeletions"; |
| 1285 SearchBox::Get(render_view)->UndoAllMostVisitedDeletions(); | 1246 SearchBox::Get(render_view)->UndoAllMostVisitedDeletions(); |
| 1286 } | 1247 } |
| 1287 | 1248 |
| 1288 // static | 1249 // static |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1309 if (!render_view) return; | 1270 if (!render_view) return; |
| 1310 | 1271 |
| 1311 bool display_instant_results = | 1272 bool display_instant_results = |
| 1312 SearchBox::Get(render_view)->display_instant_results(); | 1273 SearchBox::Get(render_view)->display_instant_results(); |
| 1313 DVLOG(1) << render_view << " GetDisplayInstantResults" << | 1274 DVLOG(1) << render_view << " GetDisplayInstantResults" << |
| 1314 display_instant_results; | 1275 display_instant_results; |
| 1315 args.GetReturnValue().Set(display_instant_results); | 1276 args.GetReturnValue().Set(display_instant_results); |
| 1316 } | 1277 } |
| 1317 | 1278 |
| 1318 } // namespace extensions_v8 | 1279 } // namespace extensions_v8 |
| OLD | NEW |