diff options
author | vabr@chromium.org <vabr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 12:33:35 +0000 |
---|---|---|
committer | vabr@chromium.org <vabr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-11 12:33:35 +0000 |
commit | ae54db1c1465c911b228ef10e82aea07bb012b11 (patch) | |
tree | 87e9851aa020e0f12b2dc98c09f0f4d6ccbddfbe /chrome/browser/extensions/api/test/test_api.cc | |
parent | c6d5f8cf61ab1a4d73d75d5bbaf3e81a5d9debe1 (diff) | |
download | chromium_src-ae54db1c1465c911b228ef10e82aea07bb012b11.zip chromium_src-ae54db1c1465c911b228ef10e82aea07bb012b11.tar.gz chromium_src-ae54db1c1465c911b228ef10e82aea07bb012b11.tar.bz2 |
Moving test_api to api/test .
BUG=101244
TEST=N/A, only moving code, no change in functionality
Review URL: https://chromiumcodereview.appspot.com/10690113
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api/test/test_api.cc')
-rw-r--r-- | chrome/browser/extensions/api/test/test_api.cc | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/chrome/browser/extensions/api/test/test_api.cc b/chrome/browser/extensions/api/test/test_api.cc new file mode 100644 index 0000000..03cc46d --- /dev/null +++ b/chrome/browser/extensions/api/test/test_api.cc @@ -0,0 +1,145 @@ +// Copyright (c) 2012 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/extensions/api/test/test_api.h" + +#include <string> + +#include "base/command_line.h" +#include "base/memory/singleton.h" +#include "chrome/browser/extensions/extension_service.h" +#include "chrome/browser/extensions/extension_function_dispatcher.h" +#include "chrome/browser/extensions/extensions_quota_service.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser_commands.h" +#include "chrome/common/chrome_notification_types.h" +#include "chrome/common/chrome_switches.h" +#include "content/public/browser/notification_service.h" + +namespace { + +// If you see this error in your test, you need to set the config state +// to be returned by chrome.test.getConfig(). Do this by calling +// TestGetConfigFunction::set_test_config_state(Value* state) +// in test set up. +const char kNoTestConfigDataError[] = "Test configuration was not set."; + +const char kNotTestProcessError[] = + "The chrome.test namespace is only available in tests."; + +} // namespace + +namespace extensions { + +TestExtensionFunction::~TestExtensionFunction() {} + +void TestExtensionFunction::Run() { + if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { + error_ = kNotTestProcessError; + SendResponse(false); + return; + } + SendResponse(RunImpl()); +} + +TestNotifyPassFunction::~TestNotifyPassFunction() {} + +bool TestNotifyPassFunction::RunImpl() { + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_EXTENSION_TEST_PASSED, + content::Source<Profile>(dispatcher()->profile()), + content::NotificationService::NoDetails()); + return true; +} + +TestFailFunction::~TestFailFunction() {} + +bool TestFailFunction::RunImpl() { + std::string message; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_EXTENSION_TEST_FAILED, + content::Source<Profile>(dispatcher()->profile()), + content::Details<std::string>(&message)); + return true; +} + +TestLogFunction::~TestLogFunction() {} + +bool TestLogFunction::RunImpl() { + std::string message; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); + VLOG(1) << message; + return true; +} + +TestResetQuotaFunction::~TestResetQuotaFunction() {} + +bool TestResetQuotaFunction::RunImpl() { + ExtensionService* service = profile()->GetExtensionService(); + ExtensionsQuotaService* quota = service->quota_service(); + quota->Purge(); + quota->violators_.clear(); + return true; +} + +TestCreateIncognitoTabFunction:: + ~TestCreateIncognitoTabFunction() {} + +bool TestCreateIncognitoTabFunction::RunImpl() { + std::string url; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); + chrome::OpenURLOffTheRecord(profile(), GURL(url)); + return true; +} + +bool TestSendMessageFunction::RunImpl() { + std::string message; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); + AddRef(); // balanced in Reply + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_EXTENSION_TEST_MESSAGE, + content::Source<TestSendMessageFunction>(this), + content::Details<std::string>(&message)); + return true; +} +TestSendMessageFunction::~TestSendMessageFunction() {} + +void TestSendMessageFunction::Reply(const std::string& message) { + result_.reset(Value::CreateStringValue(message)); + SendResponse(true); + Release(); // balanced in RunImpl +} + +// static +void TestGetConfigFunction::set_test_config_state( + DictionaryValue* value) { + TestConfigState* test_config_state = TestConfigState::GetInstance(); + test_config_state->set_config_state(value); +} + +TestGetConfigFunction::TestConfigState::TestConfigState() + : config_state_(NULL) {} + +// static +TestGetConfigFunction::TestConfigState* +TestGetConfigFunction::TestConfigState::GetInstance() { + return Singleton<TestConfigState>::get(); +} + +TestGetConfigFunction::~TestGetConfigFunction() {} + +bool TestGetConfigFunction::RunImpl() { + TestConfigState* test_config_state = TestConfigState::GetInstance(); + + if (!test_config_state->config_state()) { + error_ = kNoTestConfigDataError; + return false; + } + + result_.reset(test_config_state->config_state()->DeepCopy()); + return true; +} + +} // namespace extensions |