blob: a10d620eb2f3bfe3c2254e1eff1e5e10e333ecc6 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/login/test/js_checker.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
std::string WrapSend(const std::string& expression) {
return "window.domAutomationController.send(" + expression + ")";
}
} // namespace
namespace chromeos {
namespace test {
JSChecker::JSChecker() : web_contents_(NULL) {}
JSChecker::JSChecker(content::WebContents* web_contents)
: web_contents_(web_contents) {
}
void JSChecker::Evaluate(const std::string& expression) {
CHECK(web_contents_);
ASSERT_TRUE(content::ExecuteScript(web_contents_, expression));
}
bool JSChecker::GetBool(const std::string& expression) {
bool result;
GetBoolImpl(expression, &result);
return result;
}
int JSChecker::GetInt(const std::string& expression) {
int result;
GetIntImpl(expression, &result);
return result;
}
std::string JSChecker::GetString(const std::string& expression) {
std::string result;
GetStringImpl(expression, &result);
return result;
}
void JSChecker::ExpectTrue(const std::string& expression) {
EXPECT_TRUE(GetBool(expression)) << expression;
}
void JSChecker::ExpectFalse(const std::string& expression) {
EXPECT_FALSE(GetBool(expression)) << expression;
}
void JSChecker::ExpectEQ(const std::string& expression, int result) {
EXPECT_EQ(GetInt(expression), result) << expression;
}
void JSChecker::ExpectNE(const std::string& expression, int result) {
EXPECT_NE(GetInt(expression), result) << expression;
}
void JSChecker::ExpectEQ(const std::string& expression,
const std::string& result) {
EXPECT_EQ(GetString(expression), result) << expression;
}
void JSChecker::ExpectNE(const std::string& expression,
const std::string& result) {
EXPECT_NE(GetString(expression), result) << expression;
}
void JSChecker::GetBoolImpl(const std::string& expression, bool* result) {
CHECK(web_contents_);
ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents_,
"!!" + WrapSend(expression),
result));
}
void JSChecker::GetIntImpl(const std::string& expression, int* result) {
CHECK(web_contents_);
ASSERT_TRUE(content::ExecuteScriptAndExtractInt(web_contents_,
WrapSend(expression),
result));
}
void JSChecker::GetStringImpl(const std::string& expression,
std::string* result) {
CHECK(web_contents_);
ASSERT_TRUE(content::ExecuteScriptAndExtractString(web_contents_,
WrapSend(expression),
result));
}
} // namespace test
} // namespace chromeos