Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: webkit/tools/test_shell/layout_test_controller.cc

Issue 594054: Implement layoutTestController.numberOfPages. (Closed)
Patch Set: update per yuzo's suggestion Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/tools/test_shell/layout_test_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/tools/test_shell/layout_test_controller.cc
diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc
index ba08aa6bbccd87b823e7ce1e7dde0b9592dd1261..0552538d497f322e9a5f8cf5f3a18482d537f134 100644
--- a/webkit/tools/test_shell/layout_test_controller.cc
+++ b/webkit/tools/test_shell/layout_test_controller.cc
@@ -129,6 +129,7 @@ LayoutTestController::LayoutTestController(TestShell* shell) :
BindMethod("counterValueForElementById", &LayoutTestController::counterValueForElementById);
BindMethod("addUserScript", &LayoutTestController::addUserScript);
BindMethod("pageNumberForElementById", &LayoutTestController::pageNumberForElementById);
+ BindMethod("numberOfPages", &LayoutTestController::numberOfPages);
// The following are stubs.
BindMethod("dumpAsWebArchive", &LayoutTestController::dumpAsWebArchive);
@@ -1071,28 +1072,42 @@ void LayoutTestController::counterValueForElementById(
result->Set(WideToUTF8(counterValue));
}
-void LayoutTestController::pageNumberForElementById(
- const CppArgumentList& args, CppVariant* result) {
- result->SetNull();
+static bool ParsePageSizeParameters(const CppArgumentList& args,
+ int arg_offset,
+ float* page_width_in_pixels,
+ float* page_height_in_pixels) {
// WebKit is using the window width/height of DumpRenderTree as the
// default value of the page size.
// TODO(hamaji): Once chromium DumpRenderTree is implemented,
// share these values with other ports.
- float page_width_in_pixels = 800;
- float page_height_in_pixels = 600;
- switch (args.size()) {
- case 3:
- if (!args[1].isNumber() || !args[2].isNumber())
- return;
- page_width_in_pixels = static_cast<float>(args[1].ToInt32());
- page_height_in_pixels = static_cast<float>(args[2].ToInt32());
- case 1: // fall through.
- if (!args[0].isString())
- return;
+ *page_width_in_pixels = 800;
+ *page_height_in_pixels = 600;
+ switch (args.size() - arg_offset) {
+ case 2:
+ if (!args[arg_offset].isNumber() || !args[1 + arg_offset].isNumber())
+ return false;
+ *page_width_in_pixels = static_cast<float>(args[arg_offset].ToInt32());
+ *page_height_in_pixels = static_cast<float>(args[1 + arg_offset].ToInt32());
+ // fall through.
+ case 0:
break;
default:
- return;
+ return false;
}
+ return true;
+}
+
+void LayoutTestController::pageNumberForElementById(
+ const CppArgumentList& args, CppVariant* result) {
+ result->SetNull();
+ float page_width_in_pixels = 0;
+ float page_height_in_pixels = 0;
+ if (!ParsePageSizeParameters(args, 1,
+ &page_width_in_pixels, &page_height_in_pixels))
+ return;
+ if (!args[0].isString())
+ return;
+
int page_number = webkit_glue::PageNumberForElementById(
shell_->webView()->mainFrame(),
args[0].ToString(),
@@ -1101,6 +1116,21 @@ void LayoutTestController::pageNumberForElementById(
result->Set(page_number);
}
+void LayoutTestController::numberOfPages(
+ const CppArgumentList& args, CppVariant* result) {
+ result->SetNull();
+ float page_width_in_pixels = 0;
+ float page_height_in_pixels = 0;
+ if (!ParsePageSizeParameters(args, 0,
+ &page_width_in_pixels, &page_height_in_pixels))
+ return;
+
+ int page_number = webkit_glue::NumberOfPages(shell_->webView()->mainFrame(),
+ page_width_in_pixels,
+ page_height_in_pixels);
+ result->Set(page_number);
+}
+
void LayoutTestController::LogErrorToConsole(const std::string& text) {
shell_->delegate()->didAddMessageToConsole(
WebConsoleMessage(WebConsoleMessage::LevelError,
« no previous file with comments | « webkit/tools/test_shell/layout_test_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698