diff options
author | grt@chromium.org <grt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-28 21:48:57 +0000 |
---|---|---|
committer | grt@chromium.org <grt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-28 21:48:57 +0000 |
commit | 8ade07b605b2c1431595cc03d7489c69dff6cc0b (patch) | |
tree | 07ad2018e7f297b8c743d7a4f6c628f53beb59fb /chrome_frame | |
parent | b158c097e0d0af3ccc3c836a2f3c13ac35686549 (diff) | |
download | chromium_src-8ade07b605b2c1431595cc03d7489c69dff6cc0b.zip chromium_src-8ade07b605b2c1431595cc03d7489c69dff6cc0b.tar.gz chromium_src-8ade07b605b2c1431595cc03d7489c69dff6cc0b.tar.bz2 |
Update configuration of IE for GCF tests.
This change:
* Adds support for configuring IE8.
* Adds support for configuring IE8, 9, and 10 properly if the user had
previously skipped configuration.
BUG=none
R=erikwright@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16094006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202660 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/test/ie_configurator.cc | 105 |
1 files changed, 83 insertions, 22 deletions
diff --git a/chrome_frame/test/ie_configurator.cc b/chrome_frame/test/ie_configurator.cc index d68818dd..43d7378 100644 --- a/chrome_frame/test/ie_configurator.cc +++ b/chrome_frame/test/ie_configurator.cc @@ -36,14 +36,26 @@ 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 kValueIE9LastShown[] = L"IE9RunOnceLastShown"; +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"; @@ -142,7 +154,7 @@ class IE7Configurator : public IEConfigurator { DISALLOW_COPY_AND_ASSIGN(IE7Configurator); }; -// A configurator for Internet Explorer 9 and 10. +// A configurator for Internet Explorer 8, 9, and 10. class ModernIEConfigurator : public IEConfigurator { public: explicit ModernIEConfigurator(IEVersion ie_version); @@ -160,8 +172,13 @@ class ModernIEConfigurator : public IEConfigurator { 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; @@ -354,15 +371,27 @@ void IE7Configurator::RevertSettings() { // 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) @@ -378,6 +407,9 @@ const ModernIEConfigurator::RunOnceValueNames* ModernIEConfigurator::RunOnceNamesForVersion( IEVersion ie_version) { switch (ie_version) { + case IE_8: + return &kIE8ValueNames; + break; case IE_9: return &kIE9ValueNames; break; @@ -396,22 +428,36 @@ bool ModernIEConfigurator::IsPerUserSetupComplete() { base::win::RegKey key_main; if (key_main.Open(HKEY_CURRENT_USER, kKeyIEMain, - KEY_QUERY_VALUE) == ERROR_SUCCESS) { - DWORD completed = 0; - FILETIME completion_time = {}; - DWORD size = sizeof(completion_time); - - if (key_main.ReadValueDW(run_once_value_names_->completed, - &completed) == ERROR_SUCCESS && - completed != 0 && - key_main.ReadValue(run_once_value_names_->completion_time, - &completion_time, &size, NULL) == ERROR_SUCCESS && - size == sizeof(completion_time)) { - is_complete = true; - } + KEY_QUERY_VALUE) != ERROR_SUCCESS) { + return false; } - return is_complete; + 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. @@ -461,20 +507,34 @@ bool ModernIEConfigurator::IsAddonPromptDisabledForChromeFrame() { 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, - base::Time::Now().ToFileTime()); - 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); + 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, kValueEnabledV9, 0); + setter_.AddDWORDValue( + root, + kKeyIEPhishingFilter, + (ie_version_ == IE_8 ? kValueEnabledV8 : kValueEnabledV9), + 0); // Don't download compatibility view lists. setter_.AddDWORDValue(root, kKeyIEBrowserEmulation, kValueMSCompatibilityMode, 0); @@ -514,6 +574,7 @@ IEConfigurator* CreateConfigurator() { case IE_7: configurator = new IE7Configurator(); break; + case IE_8: case IE_9: case IE_10: configurator = new ModernIEConfigurator(ie_version); |