Home | History | Annotate | Download | only in test
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/chromeos/login/test/js_checker.h"
      6 
      7 #include "content/public/test/browser_test_utils.h"
      8 #include "content/public/test/test_utils.h"
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 namespace {
     12 
     13 std::string WrapSend(const std::string& expression) {
     14   return "window.domAutomationController.send(" + expression + ")";
     15 }
     16 
     17 }  // namespace
     18 
     19 namespace chromeos {
     20 namespace test {
     21 
     22 JSChecker::JSChecker() : web_contents_(NULL) {}
     23 
     24 JSChecker::JSChecker(content::WebContents* web_contents)
     25     : web_contents_(web_contents) {
     26 }
     27 
     28 void JSChecker::Evaluate(const std::string& expression) {
     29   CHECK(web_contents_);
     30   ASSERT_TRUE(content::ExecuteScript(web_contents_, expression));
     31 }
     32 
     33 bool JSChecker::GetBool(const std::string& expression) {
     34   bool result;
     35   GetBoolImpl(expression, &result);
     36   return result;
     37 }
     38 
     39 int JSChecker::GetInt(const std::string& expression) {
     40   int result;
     41   GetIntImpl(expression, &result);
     42   return result;
     43 }
     44 
     45 std::string JSChecker::GetString(const std::string& expression) {
     46   std::string result;
     47   GetStringImpl(expression, &result);
     48   return result;
     49 }
     50 
     51 void JSChecker::ExpectTrue(const std::string& expression) {
     52   EXPECT_TRUE(GetBool(expression)) << expression;
     53 }
     54 
     55 void JSChecker::ExpectFalse(const std::string& expression) {
     56   EXPECT_FALSE(GetBool(expression)) << expression;
     57 }
     58 
     59 void JSChecker::ExpectEQ(const std::string& expression, int result) {
     60   EXPECT_EQ(GetInt(expression), result) << expression;
     61 }
     62 
     63 void JSChecker::ExpectNE(const std::string& expression, int result) {
     64   EXPECT_NE(GetInt(expression), result) << expression;
     65 }
     66 
     67 void JSChecker::ExpectEQ(const std::string& expression,
     68                          const std::string& result) {
     69   EXPECT_EQ(GetString(expression), result) << expression;
     70 }
     71 
     72 void JSChecker::ExpectNE(const std::string& expression,
     73                          const std::string& result) {
     74   EXPECT_NE(GetString(expression), result) << expression;
     75 }
     76 
     77 void JSChecker::GetBoolImpl(const std::string& expression, bool* result) {
     78   CHECK(web_contents_);
     79   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents_,
     80                                                    "!!" + WrapSend(expression),
     81                                                    result));
     82 }
     83 
     84 void JSChecker::GetIntImpl(const std::string& expression, int* result) {
     85   CHECK(web_contents_);
     86   ASSERT_TRUE(content::ExecuteScriptAndExtractInt(web_contents_,
     87                                                   WrapSend(expression),
     88                                                   result));
     89 }
     90 
     91 void JSChecker::GetStringImpl(const std::string& expression,
     92                               std::string* result) {
     93   CHECK(web_contents_);
     94   ASSERT_TRUE(content::ExecuteScriptAndExtractString(web_contents_,
     95                                                      WrapSend(expression),
     96                                                      result));
     97 }
     98 
     99 }  // namespace test
    100 }  // namespace chromeos
    101