| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome_frame/utils.h" | 5 #include "chrome_frame/utils.h" |
| 6 | 6 |
| 7 #include <atlsafe.h> | 7 #include <atlsafe.h> |
| 8 #include <atlsecurity.h> | 8 #include <atlsecurity.h> |
| 9 #include <htiframe.h> | 9 #include <htiframe.h> |
| 10 #include <mshtml.h> | 10 #include <mshtml.h> |
| 11 #include <shlobj.h> | 11 #include <shlobj.h> |
| 12 #include <limits> |
| 12 | 13 |
| 13 #include "base/file_version_info.h" | 14 #include "base/file_version_info.h" |
| 14 #include "base/lazy_instance.h" | 15 #include "base/lazy_instance.h" |
| 15 #include "base/logging.h" | 16 #include "base/logging.h" |
| 16 #include "base/path_service.h" | 17 #include "base/path_service.h" |
| 17 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
| 18 #include "base/strings/string_piece.h" | 19 #include "base/strings/string_piece.h" |
| 19 #include "base/strings/string_tokenizer.h" | 20 #include "base/strings/string_tokenizer.h" |
| 20 #include "base/strings/string_util.h" | 21 #include "base/strings/string_util.h" |
| 21 #include "base/strings/stringprintf.h" | 22 #include "base/strings/stringprintf.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 const wchar_t kIexploreProfileName[] = L"iexplore"; | 59 const wchar_t kIexploreProfileName[] = L"iexplore"; |
| 59 const wchar_t kMetaTag[] = L"meta"; | 60 const wchar_t kMetaTag[] = L"meta"; |
| 60 const wchar_t kRundllProfileName[] = L"rundll32"; | 61 const wchar_t kRundllProfileName[] = L"rundll32"; |
| 61 const wchar_t kXUACompatValue[] = L"x-ua-compatible"; | 62 const wchar_t kXUACompatValue[] = L"x-ua-compatible"; |
| 62 | 63 |
| 63 // Registry key and value names related to Chrome Frame configuration options. | 64 // Registry key and value names related to Chrome Frame configuration options. |
| 64 const wchar_t kAllowUnsafeURLs[] = L"AllowUnsafeURLs"; | 65 const wchar_t kAllowUnsafeURLs[] = L"AllowUnsafeURLs"; |
| 65 const wchar_t kChromeFrameConfigKey[] = L"Software\\Google\\ChromeFrame"; | 66 const wchar_t kChromeFrameConfigKey[] = L"Software\\Google\\ChromeFrame"; |
| 66 const wchar_t kEnableBuggyBhoIntercept[] = L"EnableBuggyBhoIntercept"; | 67 const wchar_t kEnableBuggyBhoIntercept[] = L"EnableBuggyBhoIntercept"; |
| 67 const wchar_t kEnableGCFRendererByDefault[] = L"IsDefaultRenderer"; | 68 const wchar_t kEnableGCFRendererByDefault[] = L"IsDefaultRenderer"; |
| 69 const wchar_t kSkipGCFMetadataCheck[] = L"SkipGCFMetadataCheck"; |
| 68 const wchar_t kExcludeUAFromDomainList[] = L"ExcludeUAFromDomain"; | 70 const wchar_t kExcludeUAFromDomainList[] = L"ExcludeUAFromDomain"; |
| 69 const wchar_t kPatchProtocols[] = L"PatchProtocols"; | 71 const wchar_t kPatchProtocols[] = L"PatchProtocols"; |
| 70 const wchar_t kRenderInGCFUrlList[] = L"RenderInGcfUrls"; | 72 const wchar_t kRenderInGCFUrlList[] = L"RenderInGcfUrls"; |
| 71 const wchar_t kRenderInHostUrlList[] = L"RenderInHostUrls"; | 73 const wchar_t kRenderInHostUrlList[] = L"RenderInHostUrls"; |
| 72 | 74 |
| 73 static const wchar_t kChromeFramePersistNPAPIReg[] = L"PersistNPAPIReg"; | 75 static const wchar_t kChromeFramePersistNPAPIReg[] = L"PersistNPAPIReg"; |
| 74 | 76 |
| 75 const char kAttachExternalTabPrefix[] = "attach_external_tab"; | 77 const char kAttachExternalTabPrefix[] = "attach_external_tab"; |
| 76 | 78 |
| 77 // Indicates that we are running in a test environment, where execptions, etc | 79 // Indicates that we are running in a test environment, where execptions, etc |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 RegKey config_key; | 732 RegKey config_key; |
| 731 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, | 733 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
| 732 KEY_READ) == ERROR_SUCCESS) { | 734 KEY_READ) == ERROR_SUCCESS) { |
| 733 config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); | 735 config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); |
| 734 } | 736 } |
| 735 } | 737 } |
| 736 | 738 |
| 737 return is_default != 0; | 739 return is_default != 0; |
| 738 } | 740 } |
| 739 | 741 |
| 742 // Check for the registry key 'SkipGCFMetadataCheck' and if true, then |
| 743 // ignore presence of <meta http-equiv="X-UA-Compatible" content="chrome=1"> |
| 744 bool SkipMetadataCheck() { |
| 745 // Check policy settings |
| 746 PolicySettings::SkipMetadataCheck metadataCheck = |
| 747 PolicySettings::GetInstance()->skip_metadata_check(); |
| 748 if (metadataCheck != PolicySettings::SKIP_METADATA_CHECK_NOT_SPECIFIED) |
| 749 return (metadataCheck == PolicySettings::SKIP_METADATA_CHECK_YES); |
| 750 |
| 751 DWORD skip = 0; |
| 752 RegKey config_key; |
| 753 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
| 754 KEY_READ) == ERROR_SUCCESS) { |
| 755 config_key.ReadValueDW(kSkipGCFMetadataCheck, &skip); |
| 756 } |
| 757 return skip != 0; |
| 758 } |
| 759 |
| 740 RendererType RendererTypeForUrl(const std::wstring& url) { | 760 RendererType RendererTypeForUrl(const std::wstring& url) { |
| 741 // First check if the default renderer settings are specified by policy. | 761 // First check if the default renderer settings are specified by policy. |
| 742 // If so, then that overrides the user settings. | 762 // If so, then that overrides the user settings. |
| 743 PolicySettings::RendererForUrl renderer = | 763 PolicySettings::RendererForUrl renderer = |
| 744 PolicySettings::GetInstance()->GetRendererForUrl(url.c_str()); | 764 PolicySettings::GetInstance()->GetRendererForUrl(url.c_str()); |
| 745 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { | 765 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { |
| 746 // We may know at this point that policy says do NOT render in Chrome Frame. | 766 // We may know at this point that policy says do NOT render in Chrome Frame. |
| 747 // To maintain consistency, we return RENDERER_TYPE_UNDETERMINED so that | 767 // To maintain consistency, we return RENDERER_TYPE_UNDETERMINED so that |
| 748 // content sniffing, etc. still take place. | 768 // content sniffing, etc. still take place. |
| 749 // TODO(tommi): Clarify the intent here. | 769 // TODO(tommi): Clarify the intent here. |
| (...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1674 wininet_connection_count_updated = true; | 1694 wininet_connection_count_updated = true; |
| 1675 return true; | 1695 return true; |
| 1676 } | 1696 } |
| 1677 | 1697 |
| 1678 void GetChromeFrameProfilePath(const string16& profile_name, | 1698 void GetChromeFrameProfilePath(const string16& profile_name, |
| 1679 base::FilePath* profile_path) { | 1699 base::FilePath* profile_path) { |
| 1680 chrome::GetChromeFrameUserDataDirectory(profile_path); | 1700 chrome::GetChromeFrameUserDataDirectory(profile_path); |
| 1681 *profile_path = profile_path->Append(profile_name); | 1701 *profile_path = profile_path->Append(profile_name); |
| 1682 DVLOG(1) << __FUNCTION__ << ": " << profile_path->value(); | 1702 DVLOG(1) << __FUNCTION__ << ": " << profile_path->value(); |
| 1683 } | 1703 } |
| OLD | NEW |