| Index: chrome_frame/test/ie_configurator.cc
|
| diff --git a/chrome_frame/test/ie_configurator.cc b/chrome_frame/test/ie_configurator.cc
|
| index 10c445f981da77096496972f7c3eca0669b77527..d68818dd00bde2cffa1f7d085fffd99fc6228f75 100644
|
| --- a/chrome_frame/test/ie_configurator.cc
|
| +++ b/chrome_frame/test/ie_configurator.cc
|
| @@ -42,6 +42,8 @@ const wchar_t kValueIE9Completed[] = L"IE9RunOncePerInstallCompleted";
|
| const wchar_t kValueIE9CompletionTime[] = L"IE9RunOnceCompletionTime";
|
| const wchar_t kValueIE9LastShown[] = L"IE9RunOnceLastShown";
|
| const wchar_t kValueIE9TourNoShow[] = L"IE9TourNoShow";
|
| +const wchar_t kValueIE10Completed[] = L"IE10RunOncePerInstallCompleted";
|
| +const wchar_t kValueIE10CompletionTime[] = L"IE10RunOnceCompletionTime";
|
| const wchar_t kValueIgnoreFrameApprovalCheck[] = L"IgnoreFrameApprovalCheck";
|
| const wchar_t kValueMSCompatibilityMode[] = L"MSCompatibilityMode";
|
|
|
| @@ -140,24 +142,39 @@ class IE7Configurator : public IEConfigurator {
|
| DISALLOW_COPY_AND_ASSIGN(IE7Configurator);
|
| };
|
|
|
| -// A configurator for Internet Explorer 9.
|
| -class IE9Configurator : public IEConfigurator {
|
| +// A configurator for Internet Explorer 9 and 10.
|
| +class ModernIEConfigurator : public IEConfigurator {
|
| public:
|
| - IE9Configurator();
|
| - virtual ~IE9Configurator();
|
| + explicit ModernIEConfigurator(IEVersion ie_version);
|
| + virtual ~ModernIEConfigurator();
|
|
|
| virtual void Initialize() OVERRIDE;
|
| virtual void ApplySettings() OVERRIDE;
|
| virtual void RevertSettings() OVERRIDE;
|
|
|
| private:
|
| - static bool IsPerUserSetupComplete();
|
| + // 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;
|
| + };
|
| +
|
| + static const RunOnceValueNames kIE9ValueNames;
|
| + static const RunOnceValueNames kIE10ValueNames;
|
| +
|
| + static const RunOnceValueNames* RunOnceNamesForVersion(IEVersion ie_version);
|
| + bool IsPerUserSetupComplete();
|
| static string16 GetChromeFrameBHOCLSID();
|
| static bool IsAddonPromptDisabledForChromeFrame();
|
|
|
| + const IEVersion ie_version_;
|
| + const RunOnceValueNames* run_once_value_names_;
|
| RegistrySetter setter_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(IE9Configurator);
|
| + DISALLOW_COPY_AND_ASSIGN(ModernIEConfigurator);
|
| };
|
|
|
| // RegistrySetter implementation.
|
| @@ -334,17 +351,47 @@ void IE7Configurator::RevertSettings() {
|
| setter_.Revert();
|
| }
|
|
|
| -// IE9Configurator implementation
|
| +// ModernIEConfigurator implementation
|
| +
|
| +const ModernIEConfigurator::RunOnceValueNames
|
| + ModernIEConfigurator::kIE9ValueNames = {
|
| + kValueIE9Completed,
|
| + kValueIE9CompletionTime,
|
| +};
|
|
|
| -IE9Configurator::IE9Configurator() {
|
| +const ModernIEConfigurator::RunOnceValueNames
|
| + ModernIEConfigurator::kIE10ValueNames = {
|
| + kValueIE10Completed,
|
| + kValueIE10CompletionTime,
|
| +};
|
| +
|
| +ModernIEConfigurator::ModernIEConfigurator(IEVersion ie_version)
|
| + : ie_version_(ie_version),
|
| + run_once_value_names_(RunOnceNamesForVersion(ie_version)) {
|
| }
|
|
|
| -IE9Configurator::~IE9Configurator() {
|
| +ModernIEConfigurator::~ModernIEConfigurator() {
|
| }
|
|
|
| -// Returns true if the per-user setup is complete.
|
| // static
|
| -bool IE9Configurator::IsPerUserSetupComplete() {
|
| +const ModernIEConfigurator::RunOnceValueNames*
|
| + ModernIEConfigurator::RunOnceNamesForVersion(
|
| + IEVersion ie_version) {
|
| + switch (ie_version) {
|
| + 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;
|
|
|
| @@ -354,11 +401,11 @@ bool IE9Configurator::IsPerUserSetupComplete() {
|
| FILETIME completion_time = {};
|
| DWORD size = sizeof(completion_time);
|
|
|
| - if (key_main.ReadValueDW(kValueIE9Completed,
|
| + if (key_main.ReadValueDW(run_once_value_names_->completed,
|
| &completed) == ERROR_SUCCESS &&
|
| completed != 0 &&
|
| - key_main.ReadValue(kValueIE9CompletionTime, &completion_time,
|
| - &size, NULL) == ERROR_SUCCESS &&
|
| + key_main.ReadValue(run_once_value_names_->completion_time,
|
| + &completion_time, &size, NULL) == ERROR_SUCCESS &&
|
| size == sizeof(completion_time)) {
|
| is_complete = true;
|
| }
|
| @@ -369,7 +416,7 @@ bool IE9Configurator::IsPerUserSetupComplete() {
|
|
|
| // Returns the path to the IE9 Approved Extensions key for Chrome Frame.
|
| // static
|
| -string16 IE9Configurator::GetChromeFrameBHOCLSID() {
|
| +string16 ModernIEConfigurator::GetChromeFrameBHOCLSID() {
|
| string16 bho_guid(39, L'\0');
|
| int guid_len = StringFromGUID2(CLSID_ChromeFrameBHO, &bho_guid[0],
|
| bho_guid.size());
|
| @@ -380,7 +427,7 @@ string16 IE9Configurator::GetChromeFrameBHOCLSID() {
|
|
|
| // Returns true if the add-on enablement prompt is disabled by Group Policy.
|
| // static
|
| -bool IE9Configurator::IsAddonPromptDisabledForChromeFrame() {
|
| +bool ModernIEConfigurator::IsAddonPromptDisabledForChromeFrame() {
|
| bool is_disabled = false;
|
| base::win::RegKey key;
|
|
|
| @@ -411,17 +458,21 @@ bool IE9Configurator::IsAddonPromptDisabledForChromeFrame() {
|
| return is_disabled;
|
| }
|
|
|
| -void IE9Configurator::Initialize() {
|
| +void ModernIEConfigurator::Initialize() {
|
| // Check for per-user IE setup.
|
| if (!IsPerUserSetupComplete()) {
|
| const HKEY root = HKEY_CURRENT_USER;
|
| - // Suppress the "Set up Internet Explorer 9" dialog.
|
| - setter_.AddDWORDValue(root, kKeyIEMain, kValueIE9Completed, 1);
|
| - setter_.AddFILETIMEValue(root, kKeyIEMain, kValueIE9CompletionTime,
|
| + // Suppress the "Set up Internet Explorer" dialog.
|
| + setter_.AddDWORDValue(root, kKeyIEMain, run_once_value_names_->completed,
|
| + 1);
|
| + setter_.AddFILETIMEValue(root, kKeyIEMain,
|
| + run_once_value_names_->completion_time,
|
| base::Time::Now().ToFileTime());
|
| - setter_.AddDWORDValue(root, kKeyIEMain, kValueIE9LastShown, 1);
|
| - // Don't show a tour of IE 9.
|
| - setter_.AddDWORDValue(root, kKeyIEMain, kValueIE9TourNoShow, 1);
|
| + if (ie_version_ == IE_9) {
|
| + setter_.AddDWORDValue(root, kKeyIEMain, kValueIE9LastShown, 1);
|
| + // Don't show a tour of IE 9.
|
| + setter_.AddDWORDValue(root, kKeyIEMain, kValueIE9TourNoShow, 1);
|
| + }
|
| // Turn off the phishing filter.
|
| setter_.AddDWORDValue(root, kKeyIEPhishingFilter, kValueEnabledV9, 0);
|
| // Don't download compatibility view lists.
|
| @@ -437,11 +488,11 @@ void IE9Configurator::Initialize() {
|
| }
|
| }
|
|
|
| -void IE9Configurator::ApplySettings() {
|
| +void ModernIEConfigurator::ApplySettings() {
|
| setter_.Apply();
|
| }
|
|
|
| -void IE9Configurator::RevertSettings() {
|
| +void ModernIEConfigurator::RevertSettings() {
|
| setter_.Revert();
|
| }
|
|
|
| @@ -458,12 +509,14 @@ IEConfigurator::~IEConfigurator() {
|
| IEConfigurator* CreateConfigurator() {
|
| IEConfigurator* configurator = NULL;
|
|
|
| - switch (GetInstalledIEVersion()) {
|
| + IEVersion ie_version = GetInstalledIEVersion();
|
| + switch (ie_version) {
|
| case IE_7:
|
| configurator = new IE7Configurator();
|
| break;
|
| case IE_9:
|
| - configurator = new IE9Configurator();
|
| + case IE_10:
|
| + configurator = new ModernIEConfigurator(ie_version);
|
| break;
|
| default:
|
| break;
|
|
|