OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // This file contains the definition for LayoutTestController. | 5 // This file contains the definition for LayoutTestController. |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "webkit/tools/test_shell/layout_test_controller.h" | 9 #include "webkit/tools/test_shell/layout_test_controller.h" |
10 | 10 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 BindMethod("keepWebHistory", &LayoutTestController::keepWebHistory); | 127 BindMethod("keepWebHistory", &LayoutTestController::keepWebHistory); |
128 BindMethod("storeWebScriptObject", &LayoutTestController::storeWebScriptObject
); | 128 BindMethod("storeWebScriptObject", &LayoutTestController::storeWebScriptObject
); |
129 BindMethod("accessStoredWebScriptObject", &LayoutTestController::accessStoredW
ebScriptObject); | 129 BindMethod("accessStoredWebScriptObject", &LayoutTestController::accessStoredW
ebScriptObject); |
130 BindMethod("objCClassNameOf", &LayoutTestController::objCClassNameOf); | 130 BindMethod("objCClassNameOf", &LayoutTestController::objCClassNameOf); |
131 BindMethod("addDisallowedURL", &LayoutTestController::addDisallowedURL); | 131 BindMethod("addDisallowedURL", &LayoutTestController::addDisallowedURL); |
132 BindMethod("setCallCloseOnWebViews", &LayoutTestController::setCallCloseOnWebV
iews); | 132 BindMethod("setCallCloseOnWebViews", &LayoutTestController::setCallCloseOnWebV
iews); |
133 BindMethod("setPrivateBrowsingEnabled", &LayoutTestController::setPrivateBrows
ingEnabled); | 133 BindMethod("setPrivateBrowsingEnabled", &LayoutTestController::setPrivateBrows
ingEnabled); |
134 BindMethod("setUseDashboardCompatibilityMode", &LayoutTestController::setUseDa
shboardCompatibilityMode); | 134 BindMethod("setUseDashboardCompatibilityMode", &LayoutTestController::setUseDa
shboardCompatibilityMode); |
135 | 135 |
136 BindMethod("setXSSAuditorEnabled", &LayoutTestController::setXSSAuditorEnabled
); | 136 BindMethod("setXSSAuditorEnabled", &LayoutTestController::setXSSAuditorEnabled
); |
137 BindMethod("queueScriptInIsolatedWorld", &LayoutTestController::queueScriptInI
solatedWorld); | 137 BindMethod("evaluateScriptInIsolatedWorld", &LayoutTestController::evaluateScr
iptInIsolatedWorld); |
138 | 138 |
139 // The fallback method is called when an unknown method is invoked. | 139 // The fallback method is called when an unknown method is invoked. |
140 BindFallbackMethod(&LayoutTestController::fallbackMethod); | 140 BindFallbackMethod(&LayoutTestController::fallbackMethod); |
141 | 141 |
142 // Shared properties. | 142 // Shared properties. |
143 // globalFlag is used by a number of layout tests in | 143 // globalFlag is used by a number of layout tests in |
144 // LayoutTests\http\tests\security\dataURL. | 144 // LayoutTests\http\tests\security\dataURL. |
145 BindProperty("globalFlag", &globalFlag_); | 145 BindProperty("globalFlag", &globalFlag_); |
146 // webHistoryItemCount is used by tests in LayoutTests\http\tests\history | 146 // webHistoryItemCount is used by tests in LayoutTests\http\tests\history |
147 BindProperty("webHistoryItemCount", &webHistoryItemCount_); | 147 BindProperty("webHistoryItemCount", &webHistoryItemCount_); |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 WorkItemNonLoadingScript(const string& script) : script_(script) {} | 339 WorkItemNonLoadingScript(const string& script) : script_(script) {} |
340 bool Run(TestShell* shell) { | 340 bool Run(TestShell* shell) { |
341 shell->webView()->GetMainFrame()->ExecuteScript( | 341 shell->webView()->GetMainFrame()->ExecuteScript( |
342 WebScriptSource(WebString::fromUTF8(script_))); | 342 WebScriptSource(WebString::fromUTF8(script_))); |
343 return false; | 343 return false; |
344 } | 344 } |
345 private: | 345 private: |
346 string script_; | 346 string script_; |
347 }; | 347 }; |
348 | 348 |
349 class WorkItemIsolatedWorldScript : public LayoutTestController::WorkItem { | |
350 public: | |
351 WorkItemIsolatedWorldScript(const string& script) : script_(script) {} | |
352 bool Run(TestShell* shell) { | |
353 WebScriptSource source(WebString::fromUTF8(script_)); | |
354 shell->webView()->GetMainFrame()->ExecuteScriptInNewWorld(&source, 1); | |
355 return false; | |
356 } | |
357 private: | |
358 string script_; | |
359 }; | |
360 | |
361 void LayoutTestController::queueLoadingScript( | 349 void LayoutTestController::queueLoadingScript( |
362 const CppArgumentList& args, CppVariant* result) { | 350 const CppArgumentList& args, CppVariant* result) { |
363 if (args.size() > 0 && args[0].isString()) | 351 if (args.size() > 0 && args[0].isString()) |
364 work_queue_.AddWork(new WorkItemLoadingScript(args[0].ToString())); | 352 work_queue_.AddWork(new WorkItemLoadingScript(args[0].ToString())); |
365 result->SetNull(); | 353 result->SetNull(); |
366 } | 354 } |
367 | 355 |
368 void LayoutTestController::queueNonLoadingScript( | 356 void LayoutTestController::queueNonLoadingScript( |
369 const CppArgumentList& args, CppVariant* result) { | 357 const CppArgumentList& args, CppVariant* result) { |
370 if (args.size() > 0 && args[0].isString()) | 358 if (args.size() > 0 && args[0].isString()) |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 void LayoutTestController::setXSSAuditorEnabled( | 765 void LayoutTestController::setXSSAuditorEnabled( |
778 const CppArgumentList& args, CppVariant* result) { | 766 const CppArgumentList& args, CppVariant* result) { |
779 if (args.size() > 0 && args[0].isBool()) { | 767 if (args.size() > 0 && args[0].isBool()) { |
780 WebPreferences* preferences = shell_->GetWebPreferences(); | 768 WebPreferences* preferences = shell_->GetWebPreferences(); |
781 preferences->xss_auditor_enabled = args[0].value.boolValue; | 769 preferences->xss_auditor_enabled = args[0].value.boolValue; |
782 shell_->webView()->SetPreferences(*preferences); | 770 shell_->webView()->SetPreferences(*preferences); |
783 } | 771 } |
784 result->SetNull(); | 772 result->SetNull(); |
785 } | 773 } |
786 | 774 |
787 void LayoutTestController::queueScriptInIsolatedWorld( | 775 void LayoutTestController::evaluateScriptInIsolatedWorld( |
788 const CppArgumentList& args, CppVariant* result) { | 776 const CppArgumentList& args, CppVariant* result) { |
789 if (args.size() > 0 && args[0].isString()) | 777 if (args.size() > 0 && args[0].isString()) { |
790 work_queue_.AddWork(new WorkItemIsolatedWorldScript(args[0].ToString())); | 778 WebScriptSource source(WebString::fromUTF8(args[0].ToString())); |
| 779 shell_->webView()->GetMainFrame()->ExecuteScriptInNewWorld(&source, 1); |
| 780 } |
791 result->SetNull(); | 781 result->SetNull(); |
792 } | 782 } |
793 | 783 |
794 void LayoutTestController::fallbackMethod( | 784 void LayoutTestController::fallbackMethod( |
795 const CppArgumentList& args, CppVariant* result) { | 785 const CppArgumentList& args, CppVariant* result) { |
796 std::wstring message(L"JavaScript ERROR: unknown method called on LayoutTestCo
ntroller"); | 786 std::wstring message(L"JavaScript ERROR: unknown method called on LayoutTestCo
ntroller"); |
797 if (!shell_->layout_test_mode()) { | 787 if (!shell_->layout_test_mode()) { |
798 logging::LogMessage("CONSOLE:", 0).stream() << message; | 788 logging::LogMessage("CONSOLE:", 0).stream() << message; |
799 } else { | 789 } else { |
800 printf("CONSOLE MESSAGE: %S\n", message.c_str()); | 790 printf("CONSOLE MESSAGE: %S\n", message.c_str()); |
801 } | 791 } |
802 result->SetNull(); | 792 result->SetNull(); |
803 } | 793 } |
OLD | NEW |