| Index: chrome_frame/utils.cc
|
| ===================================================================
|
| --- chrome_frame/utils.cc (revision 60165)
|
| +++ chrome_frame/utils.cc (working copy)
|
| @@ -358,6 +358,13 @@
|
| _pAtlModule->Unlock();
|
| }
|
|
|
| +bool IsChrome(RendererType renderer_type) {
|
| + DCHECK_GE(renderer_type, RENDERER_TYPE_UNDETERMINED);
|
| + DCHECK_LE(renderer_type, RENDERER_TYPE_OTHER);
|
| + return renderer_type >= RENDERER_TYPE_CHROME_MIN &&
|
| + renderer_type <= RENDERER_TYPE_CHROME_MAX;
|
| +}
|
| +
|
| namespace {
|
| const char kIEImageName[] = "iexplore.exe";
|
| const char kFirefoxImageName[] = "firefox.exe";
|
| @@ -420,8 +427,11 @@
|
| case 7:
|
| ie_version = IE_7;
|
| break;
|
| + case 8:
|
| + ie_version = IE_8;
|
| + break;
|
| default:
|
| - ie_version = HIWORD(high) >= 8 ? IE_8 : IE_UNSUPPORTED;
|
| + ie_version = HIWORD(high) >= 9 ? IE_9 : IE_UNSUPPORTED;
|
| break;
|
| }
|
| } else {
|
| @@ -710,20 +720,26 @@
|
| return is_default != 0;
|
| }
|
|
|
| -bool IsOptInUrl(const wchar_t* url) {
|
| +RendererType RendererTypeForUrl(const std::wstring& url) {
|
| // 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);
|
| + PolicySettings::RendererForUrl renderer = policy->GetRendererForUrl(
|
| + url.c_str());
|
| if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) {
|
| - return (renderer == PolicySettings::RENDER_IN_CHROME_FRAME);
|
| + // We may know at this point that policy says do NOT render in Chrome Frame.
|
| + // To maintain consistency, we return RENDERER_TYPE_UNDETERMINED so that
|
| + // content sniffing, etc. still take place.
|
| + // TODO(tommi): Clarify the intent here.
|
| + return (renderer == PolicySettings::RENDER_IN_CHROME_FRAME) ?
|
| + RENDERER_TYPE_CHROME_OPT_IN_URL : RENDERER_TYPE_UNDETERMINED;
|
| }
|
|
|
| RegKey config_key;
|
| if (!config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ))
|
| - return false;
|
| + return RENDERER_TYPE_UNDETERMINED;
|
|
|
| - bool load_in_chrome_frame = false;
|
| + RendererType renderer_type = RENDERER_TYPE_UNDETERMINED;
|
|
|
| const wchar_t* url_list_name = NULL;
|
| int render_in_cf_by_default = FALSE;
|
| @@ -731,7 +747,7 @@
|
| reinterpret_cast<DWORD*>(&render_in_cf_by_default));
|
| if (render_in_cf_by_default) {
|
| url_list_name = kRenderInHostUrlList;
|
| - load_in_chrome_frame = true; // change the default to true.
|
| + renderer_type = RENDERER_TYPE_CHROME_DEFAULT_RENDERER;
|
| } else {
|
| url_list_name = kRenderInGCFUrlList;
|
| }
|
| @@ -747,11 +763,12 @@
|
| }
|
|
|
| if (match_found) {
|
| - // The lists are there to opt out of whatever is the default.
|
| - load_in_chrome_frame = !load_in_chrome_frame;
|
| + renderer_type = render_in_cf_by_default ?
|
| + RENDERER_TYPE_UNDETERMINED :
|
| + RENDERER_TYPE_CHROME_OPT_IN_URL;
|
| }
|
|
|
| - return load_in_chrome_frame;
|
| + return renderer_type;
|
| }
|
|
|
| HRESULT NavigateBrowserToMoniker(IUnknown* browser, IMoniker* moniker,
|
|
|