| Index: chrome_frame/test/ie_configurator.cc
|
| diff --git a/chrome_frame/test/ie_configurator.cc b/chrome_frame/test/ie_configurator.cc
|
| deleted file mode 100644
|
| index 78d8711a5f770b6882d268ddcd62a7f881d7353d..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/test/ie_configurator.cc
|
| +++ /dev/null
|
| @@ -1,598 +0,0 @@
|
| -// 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_frame/test/ie_configurator.h"
|
| -
|
| -#include <windows.h>
|
| -#include <objbase.h>
|
| -
|
| -#include <ios>
|
| -#include <list>
|
| -#include <vector>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/strings/string16.h"
|
| -#include "base/time/time.h"
|
| -#include "base/win/registry.h"
|
| -#include "chrome_frame/chrome_tab.h"
|
| -#include "chrome_frame/test/chrome_frame_test_utils.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace chrome_frame_test {
|
| -
|
| -namespace {
|
| -
|
| -const wchar_t kKeyIEApprovedExtensions[] =
|
| - L"Software\\Microsoft\\Internet Explorer\\Approved Extensions\\";
|
| -const wchar_t kKeyIEInformationBar[] =
|
| - L"Software\\Microsoft\\Internet Explorer\\InformationBar";
|
| -const wchar_t kKeyIEMain[] =
|
| - L"Software\\Microsoft\\Internet Explorer\\Main";
|
| -const wchar_t kKeyIEPhishingFilter[] =
|
| - L"Software\\Microsoft\\Internet Explorer\\PhishingFilter";
|
| -const wchar_t kKeyIEBrowserEmulation[] =
|
| - L"Software\\Microsoft\\Internet Explorer\\BrowserEmulation";
|
| -const wchar_t kKeyPoliciesExt[] =
|
| - L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Ext";
|
| -const wchar_t kValueEnabledV8[] = L"EnabledV8";
|
| -const wchar_t kValueEnabledV9[] = L"EnabledV9";
|
| -const wchar_t kValueFirstTime[] = L"FirstTime";
|
| -const wchar_t kValueIE8Completed[] = L"IE8RunOncePerInstallCompleted";
|
| -const wchar_t kValueIE8CompletionTime[] = L"IE8RunOnceCompletionTime";
|
| -const wchar_t kValueIE8RunOnceLastShown[] = L"IE8RunOnceLastShown";
|
| -const wchar_t kValueIE8RunOnceLastShownTimestamp[] =
|
| - L"IE8RunOnceLastShown_TIMESTAMP";
|
| -const wchar_t kValueIE8TourNoShow[] = L"IE8TourNoShow";
|
| -const wchar_t kValueIE9Completed[] = L"IE9RunOncePerInstallCompleted";
|
| -const wchar_t kValueIE9CompletionTime[] = L"IE9RunOnceCompletionTime";
|
| -const wchar_t kValueIE9RunOnceLastShown[] = L"IE9RunOnceLastShown";
|
| -const wchar_t kValueIE9RunOnceLastShownTimestamp[] =
|
| - L"IE9RunOnceLastShown_TIMESTAMP";
|
| -const wchar_t kValueIE9TourNoShow[] = L"IE9TourNoShow";
|
| -const wchar_t kValueIE10Completed[] = L"IE10RunOncePerInstallCompleted";
|
| -const wchar_t kValueIE10CompletionTime[] = L"IE10RunOnceCompletionTime";
|
| -const wchar_t kValueIE10RunOnceLastShown[] = L"IE10RunOnceLastShown";
|
| -const wchar_t kValueIE10RunOnceLastShownTimestamp[] =
|
| - L"IE10RunOnceLastShown_TIMESTAMP";
|
| -const wchar_t kValueIgnoreFrameApprovalCheck[] = L"IgnoreFrameApprovalCheck";
|
| -const wchar_t kValueMSCompatibilityMode[] = L"MSCompatibilityMode";
|
| -
|
| -// A helper class that accumulate a set of registry mutations and corresponding
|
| -// undo data via calls to its Add*() methods. The mutations can be applied to
|
| -// the registry (repeatedly, if desired) via a call to Apply(). Revert() can be
|
| -// called to apply the accumulated undo data.
|
| -class RegistrySetter {
|
| - public:
|
| - RegistrySetter();
|
| - ~RegistrySetter();
|
| -
|
| - // Adds a mutation that sets a REG_DWORD registry value, creating any
|
| - // intermediate keys as necessary. |key| and |value| must remain valid
|
| - // throughout all calls to Apply().
|
| - void AddDWORDValue(HKEY root, const wchar_t* key, const wchar_t* value,
|
| - DWORD data);
|
| -
|
| - // Adds a mutation that assigns a FILETIME to a REG_BINARY registry value,
|
| - // creating any intermediate keys as necessary. |key| and |value| must remain
|
| - // valid throughout all calls to Apply().
|
| - void AddFILETIMEValue(HKEY root, const wchar_t* key, const wchar_t* value,
|
| - FILETIME data);
|
| -
|
| - // Applies all mutations in the order they were added. Errors encountered
|
| - // along the way are logged, but do not stop progress.
|
| - void Apply() const;
|
| -
|
| - // Applies the undo data in the reverse order that their corresponding
|
| - // mutations were added.
|
| - void Revert() const;
|
| -
|
| - private:
|
| - // The data for an individual registry value. A non-existent value is
|
| - // indicated by type = REG_NONE and empty data.
|
| - struct RegistryData {
|
| - HKEY root;
|
| - const wchar_t* key;
|
| - const wchar_t* value;
|
| - DWORD type;
|
| - std::vector<uint8> data;
|
| - };
|
| -
|
| - typedef std::list<RegistryData> RegistryDataList;
|
| -
|
| - // Adds a mutation to the end of the apply list with the given data, and a
|
| - // mutation to the revert list with the current state of the value.
|
| - void AddValue(HKEY root, const wchar_t* key, const wchar_t* value, DWORD type,
|
| - const uint8* value_begin, size_t value_len);
|
| -
|
| - // Add a mutation to the revert list that restores a registry value to its
|
| - // current state. This only adds entries to set or remove |value|. If
|
| - // portions of the hierarchy identified by |key| do not exist, but are created
|
| - // between the invocation of this method and the time the revert list is
|
| - // applied, only |value| is deleted upon revert (intermediate keys are not
|
| - // deleted).
|
| - void SaveCurrentValue(HKEY root, const wchar_t* key, const wchar_t* value);
|
| -
|
| - // Applies all mutations in |data_list| in order.
|
| - static void ApplyList(const RegistryDataList& data_list);
|
| -
|
| - RegistryDataList apply_list_;
|
| - RegistryDataList revert_list_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RegistrySetter);
|
| -};
|
| -
|
| -// A Google Test event listener that delegates to a configurator.
|
| -class ConfiguratorDriver : public testing::EmptyTestEventListener {
|
| - public:
|
| - explicit ConfiguratorDriver(IEConfigurator* configurator);
|
| - virtual ~ConfiguratorDriver();
|
| -
|
| - virtual void OnTestProgramStart(const testing::UnitTest& unit_test) OVERRIDE;
|
| - virtual void OnTestStart(const testing::TestInfo& test_info) OVERRIDE;
|
| - virtual void OnTestProgramEnd(const testing::UnitTest& unit_test) OVERRIDE;
|
| -
|
| - private:
|
| - scoped_ptr<IEConfigurator> configurator_;
|
| - DISALLOW_COPY_AND_ASSIGN(ConfiguratorDriver);
|
| -};
|
| -
|
| -// A configurator for Internet Explorer 7.
|
| -class IE7Configurator : public IEConfigurator {
|
| - public:
|
| - IE7Configurator();
|
| - virtual ~IE7Configurator();
|
| -
|
| - virtual void Initialize() OVERRIDE;
|
| - virtual void ApplySettings() OVERRIDE;
|
| - virtual void RevertSettings() OVERRIDE;
|
| -
|
| - private:
|
| - RegistrySetter setter_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(IE7Configurator);
|
| -};
|
| -
|
| -// A configurator for Internet Explorer 8, 9, and 10.
|
| -class ModernIEConfigurator : public IEConfigurator {
|
| - public:
|
| - explicit ModernIEConfigurator(IEVersion ie_version);
|
| - virtual ~ModernIEConfigurator();
|
| -
|
| - virtual void Initialize() OVERRIDE;
|
| - virtual void ApplySettings() OVERRIDE;
|
| - virtual void RevertSettings() OVERRIDE;
|
| -
|
| - private:
|
| - // The names of the registry values used to determine if IE's one-time
|
| - // initialization has been completed.
|
| - struct RunOnceValueNames {
|
| - // This DWORD value is non-zero once initialization has been completed.
|
| - const wchar_t* completed;
|
| - // This 8-byte binary value is the FILETIME of completion.
|
| - const wchar_t* completion_time;
|
| - // This DWORD value is non-zero if run-once was previously deferred.
|
| - const wchar_t* last_shown;
|
| - // This 8-byte binary value is the FILETIME of run-once deferral.
|
| - const wchar_t* last_shown_timestamp;
|
| - };
|
| -
|
| - static const RunOnceValueNames kIE8ValueNames;
|
| - static const RunOnceValueNames kIE9ValueNames;
|
| - static const RunOnceValueNames kIE10ValueNames;
|
| -
|
| - static const RunOnceValueNames* RunOnceNamesForVersion(IEVersion ie_version);
|
| - bool IsPerUserSetupComplete();
|
| - static base::string16 GetChromeFrameBHOCLSID();
|
| - static bool IsAddonPromptDisabledForChromeFrame();
|
| -
|
| - const IEVersion ie_version_;
|
| - const RunOnceValueNames* run_once_value_names_;
|
| - RegistrySetter setter_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ModernIEConfigurator);
|
| -};
|
| -
|
| -// RegistrySetter implementation.
|
| -
|
| -RegistrySetter::RegistrySetter() {
|
| -}
|
| -
|
| -RegistrySetter::~RegistrySetter() {
|
| -}
|
| -
|
| -void RegistrySetter::AddValue(HKEY root,
|
| - const wchar_t* key,
|
| - const wchar_t* value,
|
| - DWORD type,
|
| - const uint8* value_begin,
|
| - size_t value_len) {
|
| - RegistryData the_data = {
|
| - root,
|
| - key,
|
| - value,
|
| - type,
|
| - std::vector<uint8>(value_begin, value_begin + value_len)
|
| - };
|
| - apply_list_.push_back(the_data);
|
| - SaveCurrentValue(root, key, value);
|
| -}
|
| -
|
| -void RegistrySetter::SaveCurrentValue(HKEY root,
|
| - const wchar_t* key,
|
| - const wchar_t* value) {
|
| - base::win::RegKey the_key;
|
| - RegistryData the_data = { root, key, value, REG_NONE };
|
| -
|
| - LONG result = the_key.Open(root, key, KEY_QUERY_VALUE);
|
| - if (result == ERROR_SUCCESS) {
|
| - DWORD size = 0;
|
| - result = the_key.ReadValue(value, NULL, &size, &the_data.type);
|
| - if (result == ERROR_FILE_NOT_FOUND) {
|
| - // Add a mutation to delete the value.
|
| - the_data.type = REG_NONE;
|
| - revert_list_.push_front(the_data);
|
| - } else if (result == ERROR_SUCCESS) {
|
| - the_data.data.resize(size);
|
| - result = the_key.ReadValue(value, &the_data.data[0], &size,
|
| - &the_data.type);
|
| - if (result == ERROR_SUCCESS) {
|
| - revert_list_.push_front(the_data);
|
| - } else {
|
| - ::SetLastError(result);
|
| - PLOG(ERROR) << __FUNCTION__ << " unexpected error reading data for "
|
| - << value << " from key " << key
|
| - << ". The current value will not be restored upon revert.";
|
| - }
|
| - } else {
|
| - ::SetLastError(result);
|
| - PLOG(ERROR) << __FUNCTION__ << " unexpected error reading " << value
|
| - << " from key " << key
|
| - << ". The current value will not be restored upon revert.";
|
| - }
|
| - } else if (result == ERROR_FILE_NOT_FOUND) {
|
| - // Add a mutation to delete the value (but not any keys).
|
| - revert_list_.push_front(the_data);
|
| - } else {
|
| - ::SetLastError(result);
|
| - PLOG(ERROR) << __FUNCTION__ << " unexpected error opening key " << key
|
| - << " to read value " << value
|
| - << ". The current value will not be restored upon revert.";
|
| - }
|
| -}
|
| -
|
| -void RegistrySetter::AddDWORDValue(HKEY root,
|
| - const wchar_t* key,
|
| - const wchar_t* value,
|
| - DWORD data) {
|
| - const uint8* data_ptr = reinterpret_cast<uint8*>(&data);
|
| - AddValue(root, key, value, REG_DWORD, data_ptr, sizeof(data));
|
| -}
|
| -
|
| -void RegistrySetter::AddFILETIMEValue(HKEY root,
|
| - const wchar_t* key,
|
| - const wchar_t* value,
|
| - FILETIME data) {
|
| - const uint8* data_ptr = reinterpret_cast<uint8*>(&data);
|
| - AddValue(root, key, value, REG_BINARY, data_ptr, sizeof(data));
|
| -}
|
| -
|
| -// static
|
| -void RegistrySetter::ApplyList(const RegistryDataList& data_list) {
|
| - base::win::RegKey key;
|
| - LONG result = ERROR_SUCCESS;
|
| - for (RegistryDataList::const_iterator scan(data_list.begin());
|
| - scan != data_list.end(); ++scan) {
|
| - const RegistryData& data = *scan;
|
| - const bool do_delete = (data.type == REG_NONE && data.data.empty());
|
| - result = do_delete ?
|
| - key.Open(data.root, data.key, KEY_SET_VALUE) :
|
| - key.Create(data.root, data.key, KEY_SET_VALUE);
|
| - if (result == ERROR_SUCCESS) {
|
| - if (do_delete) {
|
| - result = key.DeleteValue(data.value);
|
| - } else {
|
| - result = key.WriteValue(data.value,
|
| - data.data.empty() ? NULL : &data.data[0],
|
| - data.data.size(), data.type);
|
| - }
|
| - if (result != ERROR_SUCCESS) {
|
| - ::SetLastError(result);
|
| - PLOG(ERROR) << "Failed to " << (do_delete ? "delete" : "set")
|
| - << " value " << data.value
|
| - << " in registry key " << data.key
|
| - << " in hive " << std::hex <<data.root << std::dec;
|
| - }
|
| - } else if (!do_delete || result != ERROR_FILE_NOT_FOUND) {
|
| - ::SetLastError(result);
|
| - PLOG(ERROR) << "Failed to create/open registry key " << data.key
|
| - << " in hive " << std::hex << data.root << std::dec;
|
| - }
|
| - }
|
| -}
|
| -
|
| -void RegistrySetter::Apply() const {
|
| - ApplyList(apply_list_);
|
| -}
|
| -
|
| -void RegistrySetter::Revert() const {
|
| - ApplyList(revert_list_);
|
| -}
|
| -
|
| -// ConfiguratorDriver implementation.
|
| -
|
| -ConfiguratorDriver::ConfiguratorDriver(IEConfigurator* configurator)
|
| - : configurator_(configurator) {
|
| - DCHECK(configurator);
|
| -}
|
| -
|
| -ConfiguratorDriver::~ConfiguratorDriver() {
|
| -}
|
| -
|
| -void ConfiguratorDriver::OnTestProgramStart(
|
| - const testing::UnitTest& unit_test) {
|
| - configurator_->Initialize();
|
| -}
|
| -
|
| -void ConfiguratorDriver::OnTestStart(const testing::TestInfo& test_info) {
|
| - configurator_->ApplySettings();
|
| -}
|
| -
|
| -void ConfiguratorDriver::OnTestProgramEnd(const testing::UnitTest& unit_test) {
|
| - configurator_->RevertSettings();
|
| -}
|
| -
|
| -// IE7Configurator implementation
|
| -
|
| -IE7Configurator::IE7Configurator() {
|
| -}
|
| -
|
| -IE7Configurator::~IE7Configurator() {
|
| -}
|
| -
|
| -void IE7Configurator::Initialize() {
|
| - // Suppress the friendly "Hi! I popped up an info bar for you. Did you see
|
| - // the info bar I just showed you? There's a yellow thing in your IE window
|
| - // that wasn't there before! I call it an Information Bar. Did you notice
|
| - // the Information Bar?" dialog that it likes to show.
|
| - setter_.AddDWORDValue(HKEY_CURRENT_USER, kKeyIEInformationBar,
|
| - kValueFirstTime, 0);
|
| -}
|
| -
|
| -void IE7Configurator::ApplySettings() {
|
| - setter_.Apply();
|
| -}
|
| -
|
| -void IE7Configurator::RevertSettings() {
|
| - setter_.Revert();
|
| -}
|
| -
|
| -// ModernIEConfigurator implementation
|
| -
|
| -const ModernIEConfigurator::RunOnceValueNames
|
| - ModernIEConfigurator::kIE8ValueNames = {
|
| - kValueIE8Completed,
|
| - kValueIE8CompletionTime,
|
| - kValueIE8RunOnceLastShown,
|
| - kValueIE8RunOnceLastShownTimestamp,
|
| -};
|
| -
|
| -const ModernIEConfigurator::RunOnceValueNames
|
| - ModernIEConfigurator::kIE9ValueNames = {
|
| - kValueIE9Completed,
|
| - kValueIE9CompletionTime,
|
| - kValueIE9RunOnceLastShown,
|
| - kValueIE9RunOnceLastShownTimestamp,
|
| -};
|
| -
|
| -const ModernIEConfigurator::RunOnceValueNames
|
| - ModernIEConfigurator::kIE10ValueNames = {
|
| - kValueIE10Completed,
|
| - kValueIE10CompletionTime,
|
| - kValueIE10RunOnceLastShown,
|
| - kValueIE10RunOnceLastShownTimestamp,
|
| -};
|
| -
|
| -ModernIEConfigurator::ModernIEConfigurator(IEVersion ie_version)
|
| - : ie_version_(ie_version),
|
| - run_once_value_names_(RunOnceNamesForVersion(ie_version)) {
|
| -}
|
| -
|
| -ModernIEConfigurator::~ModernIEConfigurator() {
|
| -}
|
| -
|
| -// static
|
| -const ModernIEConfigurator::RunOnceValueNames*
|
| - ModernIEConfigurator::RunOnceNamesForVersion(
|
| - IEVersion ie_version) {
|
| - switch (ie_version) {
|
| - case IE_8:
|
| - return &kIE8ValueNames;
|
| - break;
|
| - case IE_9:
|
| - return &kIE9ValueNames;
|
| - break;
|
| - case IE_10:
|
| - return &kIE10ValueNames;
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -// Returns true if the per-user setup is complete.
|
| -bool ModernIEConfigurator::IsPerUserSetupComplete() {
|
| - bool is_complete = false;
|
| - base::win::RegKey key_main;
|
| -
|
| - if (key_main.Open(HKEY_CURRENT_USER, kKeyIEMain,
|
| - KEY_QUERY_VALUE) != ERROR_SUCCESS) {
|
| - return false;
|
| - }
|
| -
|
| - DWORD dword_value = 0;
|
| - FILETIME shown_time = {};
|
| - FILETIME completion_time = {};
|
| - DWORD size = sizeof(completion_time);
|
| -
|
| - // See if the user has seen the first-run prompt.
|
| - if (key_main.ReadValue(run_once_value_names_->last_shown_timestamp,
|
| - &shown_time, &size, NULL) != ERROR_SUCCESS ||
|
| - size != sizeof(shown_time)) {
|
| - return false;
|
| - }
|
| -
|
| - // See if setup was completed.
|
| - if (key_main.ReadValue(run_once_value_names_->completion_time,
|
| - &completion_time, &size, NULL) != ERROR_SUCCESS ||
|
| - size != sizeof(completion_time)) {
|
| - return false;
|
| - }
|
| -
|
| - // See if setup was completed after the last time the prompt was shown.
|
| - base::Time time_shown = base::Time::FromFileTime(shown_time);
|
| - base::Time time_completed = base::Time::FromFileTime(completion_time);
|
| - if (time_shown >= time_completed)
|
| - return false;
|
| -
|
| - return true;
|
| -}
|
| -
|
| -// Returns the path to the IE9 Approved Extensions key for Chrome Frame.
|
| -// static
|
| -base::string16 ModernIEConfigurator::GetChromeFrameBHOCLSID() {
|
| - base::string16 bho_guid(39, L'\0');
|
| - int guid_len = StringFromGUID2(CLSID_ChromeFrameBHO, &bho_guid[0],
|
| - bho_guid.size());
|
| - DCHECK_EQ(guid_len, static_cast<int>(bho_guid.size()));
|
| - bho_guid.resize(guid_len - 1);
|
| - return bho_guid;
|
| -}
|
| -
|
| -// Returns true if the add-on enablement prompt is disabled by Group Policy.
|
| -// static
|
| -bool ModernIEConfigurator::IsAddonPromptDisabledForChromeFrame() {
|
| - bool is_disabled = false;
|
| - base::win::RegKey key;
|
| -
|
| - // See if the prompt is disabled for this user of IE.
|
| - if (key.Open(HKEY_CURRENT_USER, kKeyIEApprovedExtensions,
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS) {
|
| - DWORD type = REG_NONE;
|
| - DWORD size = 0;
|
| - if (key.ReadValue(GetChromeFrameBHOCLSID().c_str(), NULL, &size,
|
| - &type) == ERROR_SUCCESS &&
|
| - type == REG_BINARY) {
|
| - is_disabled = true;
|
| - }
|
| - }
|
| -
|
| - // Now check if the prompt is disabled for all add-ons via Group Policy.
|
| - if (!is_disabled &&
|
| - key.Open(HKEY_LOCAL_MACHINE, kKeyPoliciesExt,
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS) {
|
| - DWORD ignore = 0;
|
| - if (key.ReadValueDW(kValueIgnoreFrameApprovalCheck,
|
| - &ignore) == ERROR_SUCCESS &&
|
| - ignore != 0) {
|
| - is_disabled = true;
|
| - }
|
| - }
|
| -
|
| - return is_disabled;
|
| -}
|
| -
|
| -void ModernIEConfigurator::Initialize() {
|
| - // Check for per-user IE setup.
|
| - if (!IsPerUserSetupComplete()) {
|
| - base::Time time(base::Time::Now());
|
| - const HKEY root = HKEY_CURRENT_USER;
|
| - // Suppress the "Set up Internet Explorer" dialog.
|
| - setter_.AddDWORDValue(root, kKeyIEMain, run_once_value_names_->last_shown,
|
| - 1);
|
| - setter_.AddDWORDValue(root, kKeyIEMain, run_once_value_names_->completed,
|
| - 1);
|
| - setter_.AddFILETIMEValue(root, kKeyIEMain,
|
| - run_once_value_names_->last_shown_timestamp,
|
| - time.ToFileTime());
|
| - time += base::TimeDelta::FromMilliseconds(10);
|
| - setter_.AddFILETIMEValue(root, kKeyIEMain,
|
| - run_once_value_names_->completion_time,
|
| - time.ToFileTime());
|
| - if (ie_version_ < IE_10) {
|
| - // Don't show a tour of IE 8 and 9.
|
| - setter_.AddDWORDValue(
|
| - root,
|
| - kKeyIEMain,
|
| - (ie_version_ == IE_8 ? kValueIE8TourNoShow : kValueIE9TourNoShow),
|
| - 1);
|
| - }
|
| - // Turn off the phishing filter.
|
| - setter_.AddDWORDValue(
|
| - root,
|
| - kKeyIEPhishingFilter,
|
| - (ie_version_ == IE_8 ? kValueEnabledV8 : kValueEnabledV9),
|
| - 0);
|
| - // Don't download compatibility view lists.
|
| - setter_.AddDWORDValue(root, kKeyIEBrowserEmulation,
|
| - kValueMSCompatibilityMode, 0);
|
| - }
|
| -
|
| - // Turn off the "'Foo' add-on from 'Bar' is ready for use." prompt via Group
|
| - // Policy.
|
| - if (!IsAddonPromptDisabledForChromeFrame()) {
|
| - setter_.AddDWORDValue(HKEY_LOCAL_MACHINE, kKeyPoliciesExt,
|
| - kValueIgnoreFrameApprovalCheck, 1);
|
| - }
|
| -}
|
| -
|
| -void ModernIEConfigurator::ApplySettings() {
|
| - setter_.Apply();
|
| -}
|
| -
|
| -void ModernIEConfigurator::RevertSettings() {
|
| - setter_.Revert();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// Configurator implementation.
|
| -
|
| -IEConfigurator::IEConfigurator() {
|
| -}
|
| -
|
| -IEConfigurator::~IEConfigurator() {
|
| -}
|
| -
|
| -IEConfigurator* CreateConfigurator() {
|
| - IEConfigurator* configurator = NULL;
|
| -
|
| - IEVersion ie_version = GetInstalledIEVersion();
|
| - switch (ie_version) {
|
| - case IE_7:
|
| - configurator = new IE7Configurator();
|
| - break;
|
| - case IE_8:
|
| - case IE_9:
|
| - case IE_10:
|
| - configurator = new ModernIEConfigurator(ie_version);
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| -
|
| - return configurator;
|
| -}
|
| -
|
| -void InstallIEConfigurator() {
|
| - IEConfigurator* configurator = CreateConfigurator();
|
| -
|
| - if (configurator != NULL) {
|
| - testing::UnitTest::GetInstance()->listeners().Append(
|
| - new ConfiguratorDriver(configurator));
|
| - }
|
| -}
|
| -
|
| -} // namespace chrome_frame_test
|
|
|