summaryrefslogtreecommitdiffstats
path: root/chrome_frame/utils.cc
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-15 14:41:48 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-15 14:41:48 +0000
commit55604d73d488ecdbfaca303d9e4ee1ec01391301 (patch)
tree5c3ac04d1ebb4bbf8f120d30569df7a1c5ff521b /chrome_frame/utils.cc
parentdb9afc2141180923600d998c46ae2afc32453495 (diff)
downloadchromium_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.cc28
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;