Home | History | Annotate | Download | only in test
      1 // Copyright 2014 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 EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
      6 #define EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
      7 
      8 #include "base/values.h"
      9 #include "extensions/browser/extension_function.h"
     10 
     11 template <typename T>
     12 struct DefaultSingletonTraits;
     13 
     14 namespace extensions {
     15 
     16 // A function that is only available in tests.
     17 // Prior to running, checks that we are in a testing process.
     18 class TestExtensionFunction : public SyncExtensionFunction {
     19  protected:
     20   virtual ~TestExtensionFunction();
     21 
     22   // SyncExtensionFunction:
     23   virtual bool RunSync() OVERRIDE;
     24 
     25   virtual bool RunSafe() = 0;
     26 };
     27 
     28 class TestNotifyPassFunction : public TestExtensionFunction {
     29  public:
     30   DECLARE_EXTENSION_FUNCTION("test.notifyPass", UNKNOWN)
     31 
     32  protected:
     33   virtual ~TestNotifyPassFunction();
     34 
     35   // TestExtensionFunction:
     36   virtual bool RunSafe() OVERRIDE;
     37 };
     38 
     39 class TestNotifyFailFunction : public TestExtensionFunction {
     40  public:
     41   DECLARE_EXTENSION_FUNCTION("test.notifyFail", UNKNOWN)
     42 
     43  protected:
     44   virtual ~TestNotifyFailFunction();
     45 
     46   // TestExtensionFunction:
     47   virtual bool RunSafe() OVERRIDE;
     48 };
     49 
     50 class TestLogFunction : public TestExtensionFunction {
     51  public:
     52   DECLARE_EXTENSION_FUNCTION("test.log", UNKNOWN)
     53 
     54  protected:
     55   virtual ~TestLogFunction();
     56 
     57   // TestExtensionFunction:
     58   virtual bool RunSafe() OVERRIDE;
     59 };
     60 
     61 class TestSendMessageFunction : public AsyncExtensionFunction {
     62  public:
     63   DECLARE_EXTENSION_FUNCTION("test.sendMessage", UNKNOWN)
     64 
     65   // Sends a reply back to the calling extension. Many extensions don't need
     66   // a reply and will just ignore it.
     67   void Reply(const std::string& message);
     68 
     69   // Sends an error back to the calling extension.
     70   void ReplyWithError(const std::string& error);
     71 
     72  protected:
     73   virtual ~TestSendMessageFunction();
     74 
     75   // ExtensionFunction:
     76   virtual bool RunAsync() OVERRIDE;
     77 };
     78 
     79 class TestGetConfigFunction : public TestExtensionFunction {
     80  public:
     81   DECLARE_EXTENSION_FUNCTION("test.getConfig", UNKNOWN)
     82 
     83   // Set the dictionary returned by chrome.test.getConfig().
     84   // Does not take ownership of |value|.
     85   static void set_test_config_state(base::DictionaryValue* value);
     86 
     87  protected:
     88   // Tests that set configuration state do so by calling
     89   // set_test_config_state() as part of test set up, and unsetting it
     90   // during tear down.  This singleton class holds a pointer to that
     91   // state, owned by the test code.
     92   class TestConfigState {
     93    public:
     94     static TestConfigState* GetInstance();
     95 
     96     void set_config_state(base::DictionaryValue* config_state) {
     97       config_state_ = config_state;
     98     }
     99 
    100     const base::DictionaryValue* config_state() { return config_state_; }
    101 
    102    private:
    103     friend struct DefaultSingletonTraits<TestConfigState>;
    104     TestConfigState();
    105 
    106     base::DictionaryValue* config_state_;
    107 
    108     DISALLOW_COPY_AND_ASSIGN(TestConfigState);
    109   };
    110 
    111   virtual ~TestGetConfigFunction();
    112 
    113   // TestExtensionFunction:
    114   virtual bool RunSafe() OVERRIDE;
    115 };
    116 
    117 class TestWaitForRoundTripFunction : public TestExtensionFunction {
    118  public:
    119   DECLARE_EXTENSION_FUNCTION("test.waitForRoundTrip", UNKNOWN)
    120 
    121  protected:
    122   virtual ~TestWaitForRoundTripFunction();
    123 
    124   // TestExtensionFunction:
    125   virtual bool RunSafe() OVERRIDE;
    126 };
    127 
    128 }  // namespace extensions
    129 
    130 #endif  // EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
    131