| // Copyright (c) 2011 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/extension_test_api.h" |
| |
| #include <string> |
| |
| #include "base/memory/singleton.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extensions_quota_service.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "content/common/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 |
| // ExtensionTestGetConfigFunction::set_test_config_state(Value* state) |
| // in test set up. |
| const char kNoTestConfigDataError[] = "Test configuration was not set."; |
| |
| } // namespace |
| |
| ExtensionTestPassFunction::~ExtensionTestPassFunction() {} |
| |
| bool ExtensionTestPassFunction::RunImpl() { |
| NotificationService::current()->Notify( |
| NotificationType::EXTENSION_TEST_PASSED, |
| Source<Profile>(dispatcher()->profile()), |
| NotificationService::NoDetails()); |
| return true; |
| } |
| |
| ExtensionTestFailFunction::~ExtensionTestFailFunction() {} |
| |
| bool ExtensionTestFailFunction::RunImpl() { |
| std::string message; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); |
| NotificationService::current()->Notify( |
| NotificationType::EXTENSION_TEST_FAILED, |
| Source<Profile>(dispatcher()->profile()), |
| Details<std::string>(&message)); |
| return true; |
| } |
| |
| ExtensionTestLogFunction::~ExtensionTestLogFunction() {} |
| |
| bool ExtensionTestLogFunction::RunImpl() { |
| std::string message; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); |
| return true; |
| } |
| |
| ExtensionTestQuotaResetFunction::~ExtensionTestQuotaResetFunction() {} |
| |
| bool ExtensionTestQuotaResetFunction::RunImpl() { |
| ExtensionService* service = profile()->GetExtensionService(); |
| ExtensionsQuotaService* quota = service->quota_service(); |
| quota->Purge(); |
| quota->violators_.clear(); |
| return true; |
| } |
| |
| ExtensionTestCreateIncognitoTabFunction:: |
| ~ExtensionTestCreateIncognitoTabFunction() {} |
| |
| bool ExtensionTestCreateIncognitoTabFunction::RunImpl() { |
| std::string url; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); |
| Browser::OpenURLOffTheRecord(profile(), GURL(url)); |
| return true; |
| } |
| |
| bool ExtensionTestSendMessageFunction::RunImpl() { |
| std::string message; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &message)); |
| AddRef(); // balanced in Reply |
| NotificationService::current()->Notify( |
| NotificationType::EXTENSION_TEST_MESSAGE, |
| Source<ExtensionTestSendMessageFunction>(this), |
| Details<std::string>(&message)); |
| return true; |
| } |
| ExtensionTestSendMessageFunction::~ExtensionTestSendMessageFunction() {} |
| |
| void ExtensionTestSendMessageFunction::Reply(const std::string& message) { |
| result_.reset(Value::CreateStringValue(message)); |
| SendResponse(true); |
| Release(); // balanced in RunImpl |
| } |
| |
| // static |
| void ExtensionTestGetConfigFunction::set_test_config_state( |
| DictionaryValue* value) { |
| TestConfigState* test_config_state = TestConfigState::GetInstance(); |
| test_config_state->set_config_state(value); |
| } |
| |
| ExtensionTestGetConfigFunction::TestConfigState::TestConfigState() |
| : config_state_(NULL) {} |
| |
| // static |
| ExtensionTestGetConfigFunction::TestConfigState* |
| ExtensionTestGetConfigFunction::TestConfigState::GetInstance() { |
| return Singleton<TestConfigState>::get(); |
| } |
| |
| ExtensionTestGetConfigFunction::~ExtensionTestGetConfigFunction() {} |
| |
| bool ExtensionTestGetConfigFunction::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; |
| } |