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#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_
7
8#include <string>
9
10namespace content {
11class WebContents;
12}
13
14namespace chromeos {
15namespace test {
16
17// Utility class for tests that allows us to evalute and check JavaScript
18// expressions inside given web contents. All calls are made synchronously.
19class JSChecker {
20 public:
21  JSChecker();
22  explicit JSChecker(content::WebContents* web_contents);
23
24  // Evaluates |expression|.
25  void Evaluate(const std::string& expression);
26
27  // Evaluates |expression| and returns its result.
28  bool GetBool(const std::string& expression);
29  int GetInt(const std::string& expression);
30  std::string GetString(const std::string& expression);
31
32  // Checks truthfulness of the given |expression|.
33  void ExpectTrue(const std::string& expression);
34  void ExpectFalse(const std::string& expression);
35
36  // Compares result of |expression| with |result|.
37  void ExpectEQ(const std::string& expression, int result);
38  void ExpectNE(const std::string& expression, int result);
39  void ExpectEQ(const std::string& expression, const std::string& result);
40  void ExpectNE(const std::string& expression, const std::string& result);
41
42  void set_web_contents(content::WebContents* web_contents) {
43    web_contents_ = web_contents;
44  }
45
46 private:
47  void GetBoolImpl(const std::string& expression, bool* result);
48  void GetIntImpl(const std::string& expression, int* result);
49  void GetStringImpl(const std::string& expression, std::string* result);
50
51  content::WebContents* web_contents_;
52};
53
54}  // namespace test
55}  // namespace chromeos
56
57#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_TEST_JS_CHECKER_H_
58