diff options
author | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-15 14:41:48 +0000 |
---|---|---|
committer | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-15 14:41:48 +0000 |
commit | 55604d73d488ecdbfaca303d9e4ee1ec01391301 (patch) | |
tree | 5c3ac04d1ebb4bbf8f120d30569df7a1c5ff521b /chrome_frame/utils.cc | |
parent | db9afc2141180923600d998c46ae2afc32453495 (diff) | |
download | chromium_src-55604d73d488ecdbfaca303d9e4ee1ec01391301.zip chromium_src-55604d73d488ecdbfaca303d9e4ee1ec01391301.tar.gz chromium_src-55604d73d488ecdbfaca303d9e4ee1ec01391301.tar.bz2 |
Basic policy implementation for Chrome Frame. We read the policy settings on first request and cache them.
In order to refresh the policy settings the browser has to be restarted. Future implementations may support pushing out policy changes without requiring the user to restart the browser.
TEST=Use the policy templates to change the default renderer ("Configure the default renderer for Chrome Frame") and relevant exclusion lists.
BUG=29349
Review URL: http://codereview.chromium.org/3435004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59496 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/utils.cc')
-rw-r--r-- | chrome_frame/utils.cc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/chrome_frame/utils.cc b/chrome_frame/utils.cc index 8526b9a..35fbc83 100644 --- a/chrome_frame/utils.cc +++ b/chrome_frame/utils.cc @@ -28,6 +28,7 @@ #include "chrome/installer/util/chrome_frame_distribution.h" #include "chrome_frame/extra_system_apis.h" #include "chrome_frame/html_utils.h" +#include "chrome_frame/policy_settings.h" #include "chrome_frame/simple_resource_loader.h" #include "chrome_frame/utils.h" #include "googleurl/src/gurl.h" @@ -686,19 +687,34 @@ bool DeleteConfigValue(const wchar_t* value_name) { } bool IsGcfDefaultRenderer() { - // TODO(tommi): Implement caching for this config value as it gets - // checked frequently. DWORD is_default = 0; // NOLINT - RegKey config_key; - if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ)) { - config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); + + // First check policy settings + Singleton<PolicySettings> policy; + PolicySettings::RendererForUrl renderer = policy->default_renderer(); + if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { + is_default = (renderer == PolicySettings::RENDER_IN_CHROME_FRAME); + } else { + // TODO(tommi): Implement caching for this config value as it gets + // checked frequently. + RegKey config_key; + if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ)) { + config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); + } } return is_default != 0; } bool IsOptInUrl(const wchar_t* url) { - // TODO(tommi): Unit test. + // First check if the default renderer settings are specified by policy. + // If so, then that overrides the user settings. + Singleton<PolicySettings> policy; + PolicySettings::RendererForUrl renderer = policy->GetRendererForUrl(url); + if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { + return (renderer == PolicySettings::RENDER_IN_CHROME_FRAME); + } + RegKey config_key; if (!config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ)) return false; |