C++程序  |  90行  |  2.79 KB

// Copyright (c) 2009 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.

#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_
#pragma once

#include "base/values.h"
#include "chrome/browser/extensions/extension_function.h"

template <typename T> struct DefaultSingletonTraits;

class ExtensionTestPassFunction : public SyncExtensionFunction {
  ~ExtensionTestPassFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.notifyPass")
};

class ExtensionTestFailFunction : public SyncExtensionFunction {
  ~ExtensionTestFailFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.notifyFail")
};

class ExtensionTestLogFunction : public SyncExtensionFunction {
  ~ExtensionTestLogFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.log")
};

class ExtensionTestQuotaResetFunction : public SyncExtensionFunction {
  ~ExtensionTestQuotaResetFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.resetQuota")
};

class ExtensionTestCreateIncognitoTabFunction : public SyncExtensionFunction {
  ~ExtensionTestCreateIncognitoTabFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.createIncognitoTab")
};

class ExtensionTestSendMessageFunction : public AsyncExtensionFunction {
 public:
  // Sends a reply back to the calling extension. Many extensions don't need
  // a reply and will just ignore it.
  void Reply(const std::string& message);

 private:
  ~ExtensionTestSendMessageFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.sendMessage")
};

class ExtensionTestGetConfigFunction : public SyncExtensionFunction {
 public:
  // Set the dictionary returned by chrome.test.getConfig().
  // Does not take ownership of |value|.
  static void set_test_config_state(DictionaryValue* value);

 private:
  // Tests that set configuration state do so by calling
  // set_test_config_state() as part of test set up, and unsetting it
  // during tear down.  This singleton class holds a pointer to that
  // state, owned by the test code.
  class TestConfigState {
   public:
    static TestConfigState* GetInstance();

    void set_config_state(DictionaryValue* config_state) {
      config_state_ = config_state;
    }
    const DictionaryValue* config_state() {
      return config_state_;
    }
   private:
    friend struct DefaultSingletonTraits<TestConfigState>;
    TestConfigState();
    DictionaryValue* config_state_;
    DISALLOW_COPY_AND_ASSIGN(TestConfigState);
  };

  ~ExtensionTestGetConfigFunction();
  virtual bool RunImpl();
  DECLARE_EXTENSION_FUNCTION_NAME("test.getConfig")
};

#endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_API_H_