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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 return current_url.Resolve(possibly_relative_url); | 222 return current_url.Resolve(possibly_relative_url); |
223 return GURL(possibly_relative_url); | 223 return GURL(possibly_relative_url); |
224 } | 224 } |
225 | 225 |
226 } // namespace internal | 226 } // namespace internal |
227 | 227 |
228 namespace extensions_v8 { | 228 namespace extensions_v8 { |
229 | 229 |
230 static const char kSearchBoxExtensionName[] = "v8/EmbeddedSearch"; | 230 static const char kSearchBoxExtensionName[] = "v8/EmbeddedSearch"; |
231 | 231 |
232 // We first send this script down to determine if the page supports instant. | |
233 static const char kSupportsInstantScript[] = | |
234 "if (window.chrome &&" | |
235 " window.chrome.embeddedSearch &&" | |
236 " window.chrome.embeddedSearch.searchBox &&" | |
237 " window.chrome.embeddedSearch.searchBox.onsubmit &&" | |
238 " typeof window.chrome.embeddedSearch.searchBox.onsubmit ==" | |
239 " 'function') {" | |
240 " true;" | |
241 "} else {" | |
242 " false;" | |
243 "}"; | |
244 | |
245 static const char kDispatchChromeIdentityCheckResult[] = | 232 static const char kDispatchChromeIdentityCheckResult[] = |
246 "if (window.chrome &&" | 233 "if (window.chrome &&" |
247 " window.chrome.embeddedSearch &&" | 234 " window.chrome.embeddedSearch &&" |
248 " window.chrome.embeddedSearch.newTabPage &&" | 235 " window.chrome.embeddedSearch.newTabPage &&" |
249 " window.chrome.embeddedSearch.newTabPage.onsignedincheckdone &&" | 236 " window.chrome.embeddedSearch.newTabPage.onsignedincheckdone &&" |
250 " typeof window.chrome.embeddedSearch.newTabPage" | 237 " typeof window.chrome.embeddedSearch.newTabPage" |
251 " .onsignedincheckdone === 'function') {" | 238 " .onsignedincheckdone === 'function') {" |
252 " window.chrome.embeddedSearch.newTabPage.onsignedincheckdone(%s, %s);" | 239 " window.chrome.embeddedSearch.newTabPage.onsignedincheckdone(%s, %s);" |
253 " true;" | 240 " true;" |
254 "}"; | 241 "}"; |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 DISALLOW_COPY_AND_ASSIGN(SearchBoxExtensionWrapper); | 440 DISALLOW_COPY_AND_ASSIGN(SearchBoxExtensionWrapper); |
454 }; | 441 }; |
455 | 442 |
456 // static | 443 // static |
457 v8::Extension* SearchBoxExtension::Get() { | 444 v8::Extension* SearchBoxExtension::Get() { |
458 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). | 445 return new SearchBoxExtensionWrapper(ResourceBundle::GetSharedInstance(). |
459 GetRawDataResource(IDR_SEARCHBOX_API)); | 446 GetRawDataResource(IDR_SEARCHBOX_API)); |
460 } | 447 } |
461 | 448 |
462 // static | 449 // static |
463 bool SearchBoxExtension::PageSupportsInstant(blink::WebFrame* frame) { | |
464 if (!frame) return false; | |
465 v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); | |
466 v8::Local<v8::Value> v = frame->ExecuteScriptAndReturnValue( | |
467 blink::WebScriptSource(kSupportsInstantScript)); | |
468 return !v.IsEmpty() && v->BooleanValue(); | |
469 } | |
470 | |
471 // static | |
472 void SearchBoxExtension::DispatchChromeIdentityCheckResult( | 450 void SearchBoxExtension::DispatchChromeIdentityCheckResult( |
473 blink::WebFrame* frame, | 451 blink::WebFrame* frame, |
474 const base::string16& identity, | 452 const base::string16& identity, |
475 bool identity_match) { | 453 bool identity_match) { |
476 std::string escaped_identity = base::GetQuotedJSONString(identity); | 454 std::string escaped_identity = base::GetQuotedJSONString(identity); |
477 blink::WebString script(blink::WebString::FromUTF8(base::StringPrintf( | 455 blink::WebString script(blink::WebString::FromUTF8(base::StringPrintf( |
478 kDispatchChromeIdentityCheckResult, escaped_identity.c_str(), | 456 kDispatchChromeIdentityCheckResult, escaped_identity.c_str(), |
479 identity_match ? "true" : "false"))); | 457 identity_match ? "true" : "false"))); |
480 Dispatch(frame, script); | 458 Dispatch(frame, script); |
481 } | 459 } |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1101 ThrowInvalidParameters(args); | 1079 ThrowInvalidParameters(args); |
1102 return; | 1080 return; |
1103 } | 1081 } |
1104 | 1082 |
1105 DVLOG(1) << render_frame << " UndoMostVisitedDeletion"; | 1083 DVLOG(1) << render_frame << " UndoMostVisitedDeletion"; |
1106 SearchBox::Get(render_frame) | 1084 SearchBox::Get(render_frame) |
1107 ->UndoMostVisitedDeletion(args[0]->ToInteger()->Value()); | 1085 ->UndoMostVisitedDeletion(args[0]->ToInteger()->Value()); |
1108 } | 1086 } |
1109 | 1087 |
1110 } // namespace extensions_v8 | 1088 } // namespace extensions_v8 |
OLD | NEW |