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/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
8 #include "base/json/string_escape.h" | 8 #include "base/json/string_escape.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 "if (window.chrome &&" | 326 "if (window.chrome &&" |
327 " window.chrome.embeddedSearch &&" | 327 " window.chrome.embeddedSearch &&" |
328 " window.chrome.embeddedSearch.searchBox &&" | 328 " window.chrome.embeddedSearch.searchBox &&" |
329 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch &&" | 329 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch &&" |
330 " typeof window.chrome.embeddedSearch.searchBox.ontogglevoicesearch ==" | 330 " typeof window.chrome.embeddedSearch.searchBox.ontogglevoicesearch ==" |
331 " 'function') {" | 331 " 'function') {" |
332 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch();" | 332 " window.chrome.embeddedSearch.searchBox.ontogglevoicesearch();" |
333 " true;" | 333 " true;" |
334 "}"; | 334 "}"; |
335 | 335 |
| 336 static const char kDispatchCheckUserSyncHistoryResult[] = |
| 337 "if (window.chrome &&" |
| 338 " window.chrome.embeddedSearch &&" |
| 339 " window.chrome.embeddedSearch.newTabPage &&" |
| 340 " window.chrome.embeddedSearch.newTabPage.onusersynchistorydone &&" |
| 341 " typeof window.chrome.embeddedSearch.newTabPage" |
| 342 " .onusersynchistorydone === 'function') {" |
| 343 " window.chrome.embeddedSearch.newTabPage.onusersynchistorydone(%s);" |
| 344 " true;" |
| 345 "}"; |
| 346 |
336 // ---------------------------------------------------------------------------- | 347 // ---------------------------------------------------------------------------- |
337 | 348 |
338 class SearchBoxExtensionWrapper : public v8::Extension { | 349 class SearchBoxExtensionWrapper : public v8::Extension { |
339 public: | 350 public: |
340 explicit SearchBoxExtensionWrapper(const base::StringPiece& code); | 351 explicit SearchBoxExtensionWrapper(const base::StringPiece& code); |
341 | 352 |
342 // Allows v8's javascript code to call the native functions defined | 353 // Allows v8's javascript code to call the native functions defined |
343 // in this class for window.chrome. | 354 // in this class for window.chrome. |
344 v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( | 355 v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( |
345 v8::Isolate*, | 356 v8::Isolate*, |
346 v8::Handle<v8::String> name) override; | 357 v8::Handle<v8::String> name) override; |
347 | 358 |
348 // Helper function to find the RenderView. May return NULL. | 359 // Helper function to find the RenderView. May return NULL. |
349 static content::RenderView* GetRenderView(); | 360 static content::RenderView* GetRenderView(); |
350 | 361 |
351 // Sends a Chrome identity check to the browser. | 362 // Sends a Chrome identity check to the browser. |
352 static void CheckIsUserSignedInToChromeAs( | 363 static void CheckIsUserSignedInToChromeAs( |
353 const v8::FunctionCallbackInfo<v8::Value>& args); | 364 const v8::FunctionCallbackInfo<v8::Value>& args); |
354 | 365 |
| 366 // Checks whether the user sync his history. |
| 367 static void CheckUserSyncHistory( |
| 368 const v8::FunctionCallbackInfo<v8::Value>& args); |
| 369 |
355 // Deletes a Most Visited item. | 370 // Deletes a Most Visited item. |
356 static void DeleteMostVisitedItem( | 371 static void DeleteMostVisitedItem( |
357 const v8::FunctionCallbackInfo<v8::Value>& args); | 372 const v8::FunctionCallbackInfo<v8::Value>& args); |
358 | 373 |
359 // Focuses the omnibox. | 374 // Focuses the omnibox. |
360 static void Focus(const v8::FunctionCallbackInfo<v8::Value>& args); | 375 static void Focus(const v8::FunctionCallbackInfo<v8::Value>& args); |
361 | 376 |
362 // Gets whether or not the app launcher is enabled. | 377 // Gets whether or not the app launcher is enabled. |
363 static void GetAppLauncherEnabled( | 378 static void GetAppLauncherEnabled( |
364 const v8::FunctionCallbackInfo<v8::Value>& args); | 379 const v8::FunctionCallbackInfo<v8::Value>& args); |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 void SearchBoxExtension::DispatchThemeChange(blink::WebFrame* frame) { | 541 void SearchBoxExtension::DispatchThemeChange(blink::WebFrame* frame) { |
527 Dispatch(frame, kDispatchThemeChangeEventScript); | 542 Dispatch(frame, kDispatchThemeChangeEventScript); |
528 } | 543 } |
529 | 544 |
530 // static | 545 // static |
531 void SearchBoxExtension::DispatchToggleVoiceSearch( | 546 void SearchBoxExtension::DispatchToggleVoiceSearch( |
532 blink::WebFrame* frame) { | 547 blink::WebFrame* frame) { |
533 Dispatch(frame, kDispatchToggleVoiceSearchScript); | 548 Dispatch(frame, kDispatchToggleVoiceSearchScript); |
534 } | 549 } |
535 | 550 |
| 551 // static |
| 552 void SearchBoxExtension::DispatchCheckUserSyncHistoryResult( |
| 553 blink::WebFrame* frame, |
| 554 bool sync_history) { |
| 555 blink::WebString script(base::UTF8ToUTF16(base::StringPrintf( |
| 556 kDispatchCheckUserSyncHistoryResult, |
| 557 sync_history ? "true" : "false"))); |
| 558 Dispatch(frame, script); |
| 559 } |
| 560 |
536 SearchBoxExtensionWrapper::SearchBoxExtensionWrapper( | 561 SearchBoxExtensionWrapper::SearchBoxExtensionWrapper( |
537 const base::StringPiece& code) | 562 const base::StringPiece& code) |
538 : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) { | 563 : v8::Extension(kSearchBoxExtensionName, code.data(), 0, 0, code.size()) { |
539 } | 564 } |
540 | 565 |
541 v8::Handle<v8::FunctionTemplate> | 566 v8::Handle<v8::FunctionTemplate> |
542 SearchBoxExtensionWrapper::GetNativeFunctionTemplate( | 567 SearchBoxExtensionWrapper::GetNativeFunctionTemplate( |
543 v8::Isolate* isolate, | 568 v8::Isolate* isolate, |
544 v8::Handle<v8::String> name) { | 569 v8::Handle<v8::String> name) { |
545 if (name->Equals( | 570 if (name->Equals( |
546 v8::String::NewFromUtf8(isolate, "CheckIsUserSignedInToChromeAs"))) | 571 v8::String::NewFromUtf8(isolate, "CheckIsUserSignedInToChromeAs"))) |
547 return v8::FunctionTemplate::New(isolate, CheckIsUserSignedInToChromeAs); | 572 return v8::FunctionTemplate::New(isolate, CheckIsUserSignedInToChromeAs); |
| 573 if (name->Equals(v8::String::NewFromUtf8(isolate, "CheckUserSyncHistory"))) |
| 574 return v8::FunctionTemplate::New(isolate, CheckUserSyncHistory); |
548 if (name->Equals(v8::String::NewFromUtf8(isolate, "DeleteMostVisitedItem"))) | 575 if (name->Equals(v8::String::NewFromUtf8(isolate, "DeleteMostVisitedItem"))) |
549 return v8::FunctionTemplate::New(isolate, DeleteMostVisitedItem); | 576 return v8::FunctionTemplate::New(isolate, DeleteMostVisitedItem); |
550 if (name->Equals(v8::String::NewFromUtf8(isolate, "Focus"))) | 577 if (name->Equals(v8::String::NewFromUtf8(isolate, "Focus"))) |
551 return v8::FunctionTemplate::New(isolate, Focus); | 578 return v8::FunctionTemplate::New(isolate, Focus); |
552 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetAppLauncherEnabled"))) | 579 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetAppLauncherEnabled"))) |
553 return v8::FunctionTemplate::New(isolate, GetAppLauncherEnabled); | 580 return v8::FunctionTemplate::New(isolate, GetAppLauncherEnabled); |
554 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetDispositionFromClick"))) | 581 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetDispositionFromClick"))) |
555 return v8::FunctionTemplate::New(isolate, GetDispositionFromClick); | 582 return v8::FunctionTemplate::New(isolate, GetDispositionFromClick); |
556 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetMostVisitedItems"))) | 583 if (name->Equals(v8::String::NewFromUtf8(isolate, "GetMostVisitedItems"))) |
557 return v8::FunctionTemplate::New(isolate, GetMostVisitedItems); | 584 return v8::FunctionTemplate::New(isolate, GetMostVisitedItems); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 content::RenderView* render_view = GetRenderView(); | 650 content::RenderView* render_view = GetRenderView(); |
624 if (!render_view || args.Length() == 0 || args[0]->IsUndefined()) return; | 651 if (!render_view || args.Length() == 0 || args[0]->IsUndefined()) return; |
625 | 652 |
626 DVLOG(1) << render_view << " CheckIsUserSignedInToChromeAs"; | 653 DVLOG(1) << render_view << " CheckIsUserSignedInToChromeAs"; |
627 | 654 |
628 SearchBox::Get(render_view)->CheckIsUserSignedInToChromeAs( | 655 SearchBox::Get(render_view)->CheckIsUserSignedInToChromeAs( |
629 V8ValueToUTF16(args[0])); | 656 V8ValueToUTF16(args[0])); |
630 } | 657 } |
631 | 658 |
632 // static | 659 // static |
| 660 void SearchBoxExtensionWrapper::CheckUserSyncHistory( |
| 661 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 662 content::RenderView* render_view = GetRenderView(); |
| 663 if (!render_view) return; |
| 664 |
| 665 DVLOG(1) << render_view << " CheckUserSyncHistory"; |
| 666 SearchBox::Get(render_view)->CheckUserSyncHistory(); |
| 667 } |
| 668 |
| 669 // static |
633 void SearchBoxExtensionWrapper::DeleteMostVisitedItem( | 670 void SearchBoxExtensionWrapper::DeleteMostVisitedItem( |
634 const v8::FunctionCallbackInfo<v8::Value>& args) { | 671 const v8::FunctionCallbackInfo<v8::Value>& args) { |
635 content::RenderView* render_view = GetRenderView(); | 672 content::RenderView* render_view = GetRenderView(); |
636 if (!render_view || !args.Length()) return; | 673 if (!render_view || !args.Length()) return; |
637 | 674 |
638 DVLOG(1) << render_view << " DeleteMostVisitedItem"; | 675 DVLOG(1) << render_view << " DeleteMostVisitedItem"; |
639 SearchBox::Get(render_view)->DeleteMostVisitedItem(args[0]->IntegerValue()); | 676 SearchBox::Get(render_view)->DeleteMostVisitedItem(args[0]->IntegerValue()); |
640 } | 677 } |
641 | 678 |
642 // static | 679 // static |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1118 if (!render_view) return; | 1155 if (!render_view) return; |
1119 | 1156 |
1120 bool display_instant_results = | 1157 bool display_instant_results = |
1121 SearchBox::Get(render_view)->display_instant_results(); | 1158 SearchBox::Get(render_view)->display_instant_results(); |
1122 DVLOG(1) << render_view << " GetDisplayInstantResults" << | 1159 DVLOG(1) << render_view << " GetDisplayInstantResults" << |
1123 display_instant_results; | 1160 display_instant_results; |
1124 args.GetReturnValue().Set(display_instant_results); | 1161 args.GetReturnValue().Set(display_instant_results); |
1125 } | 1162 } |
1126 | 1163 |
1127 } // namespace extensions_v8 | 1164 } // namespace extensions_v8 |
OLD | NEW |