OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <htiframe.h> | 7 #include <htiframe.h> |
8 #include <mshtml.h> | 8 #include <mshtml.h> |
9 #include <shlobj.h> | 9 #include <shlobj.h> |
10 | 10 |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
226 bool UtilChangePersistentNPAPIMarker(bool set) { | 226 bool UtilChangePersistentNPAPIMarker(bool set) { |
227 BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution(); | 227 BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution(); |
228 std::wstring cf_state_key_path(cf_dist->GetStateKey()); | 228 std::wstring cf_state_key_path(cf_dist->GetStateKey()); |
229 | 229 |
230 RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(), | 230 RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(), |
231 KEY_READ | KEY_WRITE); | 231 KEY_READ | KEY_WRITE); |
232 | 232 |
233 bool success = false; | 233 bool success = false; |
234 if (cf_state_key.Valid()) { | 234 if (cf_state_key.Valid()) { |
235 if (set) { | 235 if (set) { |
236 success = cf_state_key.WriteValue(kChromeFramePersistNPAPIReg, 1); | 236 LONG result = cf_state_key.WriteValue(kChromeFramePersistNPAPIReg, 1); |
237 success = result == ERROR_SUCCESS; | |
robertshield
2011/01/12 15:01:34
please add parenthesis around (result == ERROR_SUC
| |
237 } else { | 238 } else { |
238 // Unfortunately, DeleteValue returns true only if the value | 239 // Unfortunately, DeleteValue returns true only if the value |
239 // previously existed, so we do a separate existence check to | 240 // previously existed, so we do a separate existence check to |
240 // validate success. | 241 // validate success. |
241 cf_state_key.DeleteValue(kChromeFramePersistNPAPIReg); | 242 cf_state_key.DeleteValue(kChromeFramePersistNPAPIReg); |
242 success = !cf_state_key.ValueExists(kChromeFramePersistNPAPIReg); | 243 success = !cf_state_key.ValueExists(kChromeFramePersistNPAPIReg); |
243 } | 244 } |
244 } | 245 } |
245 return success; | 246 return success; |
246 } | 247 } |
247 | 248 |
248 bool UtilIsPersistentNPAPIMarkerSet() { | 249 bool UtilIsPersistentNPAPIMarkerSet() { |
249 BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution(); | 250 BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution(); |
250 std::wstring cf_state_key_path(cf_dist->GetStateKey()); | 251 std::wstring cf_state_key_path(cf_dist->GetStateKey()); |
251 | 252 |
252 RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(), | 253 RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(), |
253 KEY_QUERY_VALUE); | 254 KEY_QUERY_VALUE); |
254 | 255 |
255 bool success = false; | 256 bool success = false; |
256 if (cf_state_key.Valid()) { | 257 if (cf_state_key.Valid()) { |
257 DWORD val = 0; | 258 DWORD val = 0; |
258 if (cf_state_key.ReadValueDW(kChromeFramePersistNPAPIReg, &val)) { | 259 LONG result = cf_state_key.ReadValueDW(kChromeFramePersistNPAPIReg, &val); |
260 if (result = ERROR_SUCCESS) { | |
259 success = (val != 0); | 261 success = (val != 0); |
260 } | 262 } |
261 } | 263 } |
262 return success; | 264 return success; |
263 } | 265 } |
264 | 266 |
265 | 267 |
266 HRESULT UtilGetXUACompatContentValue(const std::wstring& html_string, | 268 HRESULT UtilGetXUACompatContentValue(const std::wstring& html_string, |
267 std::wstring* content_value) { | 269 std::wstring* content_value) { |
268 if (!content_value) { | 270 if (!content_value) { |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
669 ret = true; | 671 ret = true; |
670 } | 672 } |
671 | 673 |
672 return ret; | 674 return ret; |
673 } | 675 } |
674 | 676 |
675 int GetConfigInt(int default_value, const wchar_t* value_name) { | 677 int GetConfigInt(int default_value, const wchar_t* value_name) { |
676 int ret = default_value; | 678 int ret = default_value; |
677 RegKey config_key; | 679 RegKey config_key; |
678 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, | 680 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
679 KEY_QUERY_VALUE)) { | 681 KEY_QUERY_VALUE) == ERROR_SUCCESS) { |
robertshield
2011/01/12 15:01:34
Summary comment, I like this style better than usi
| |
680 int value = FALSE; | 682 config_key.ReadValueDW(value_name, reinterpret_cast<DWORD*>(&ret)); |
681 if (config_key.ReadValueDW(value_name, reinterpret_cast<DWORD*>(&value))) { | |
682 ret = value; | |
683 } | |
684 } | 683 } |
685 | 684 |
686 return ret; | 685 return ret; |
687 } | 686 } |
688 | 687 |
689 bool GetConfigBool(bool default_value, const wchar_t* value_name) { | 688 bool GetConfigBool(bool default_value, const wchar_t* value_name) { |
690 DWORD value = GetConfigInt(default_value, value_name); | 689 DWORD value = GetConfigInt(default_value, value_name); |
691 return (value != FALSE); | 690 return (value != FALSE); |
692 } | 691 } |
693 | 692 |
694 bool SetConfigInt(const wchar_t* value_name, int value) { | 693 bool SetConfigInt(const wchar_t* value_name, int value) { |
695 RegKey config_key; | 694 RegKey config_key; |
696 if (config_key.Create(HKEY_CURRENT_USER, kChromeFrameConfigKey, | 695 if (config_key.Create(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
697 KEY_SET_VALUE)) { | 696 KEY_SET_VALUE) == ERROR_SUCCESS) { |
698 if (config_key.WriteValue(value_name, value)) { | 697 if (config_key.WriteValue(value_name, value) == ERROR_SUCCESS) { |
699 return true; | 698 return true; |
700 } | 699 } |
701 } | 700 } |
702 | 701 |
703 return false; | 702 return false; |
704 } | 703 } |
705 | 704 |
706 bool SetConfigBool(const wchar_t* value_name, bool value) { | 705 bool SetConfigBool(const wchar_t* value_name, bool value) { |
707 return SetConfigInt(value_name, value); | 706 return SetConfigInt(value_name, value); |
708 } | 707 } |
709 | 708 |
710 bool DeleteConfigValue(const wchar_t* value_name) { | 709 bool DeleteConfigValue(const wchar_t* value_name) { |
711 RegKey config_key; | 710 RegKey config_key; |
712 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, | 711 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
713 KEY_WRITE)) { | 712 KEY_WRITE) == ERROR_SUCCESS) { |
714 return config_key.DeleteValue(value_name); | 713 if (config_key.DeleteValue(value_name) == ERROR_SUCCESS) { |
714 return true; | |
715 } | |
715 } | 716 } |
716 return false; | 717 return false; |
717 } | 718 } |
718 | 719 |
719 bool IsGcfDefaultRenderer() { | 720 bool IsGcfDefaultRenderer() { |
720 DWORD is_default = 0; // NOLINT | 721 DWORD is_default = 0; // NOLINT |
721 | 722 |
722 // First check policy settings | 723 // First check policy settings |
723 PolicySettings::RendererForUrl renderer = | 724 PolicySettings::RendererForUrl renderer = |
724 PolicySettings::GetInstance()->default_renderer(); | 725 PolicySettings::GetInstance()->default_renderer(); |
725 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { | 726 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { |
726 is_default = (renderer == PolicySettings::RENDER_IN_CHROME_FRAME); | 727 is_default = (renderer == PolicySettings::RENDER_IN_CHROME_FRAME); |
727 } else { | 728 } else { |
728 // TODO(tommi): Implement caching for this config value as it gets | 729 // TODO(tommi): Implement caching for this config value as it gets |
729 // checked frequently. | 730 // checked frequently. |
730 RegKey config_key; | 731 RegKey config_key; |
731 if (config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ)) { | 732 LONG result = config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
733 KEY_READ); | |
734 if (result == ERROR_SUCCESS) { | |
732 config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); | 735 config_key.ReadValueDW(kEnableGCFRendererByDefault, &is_default); |
733 } | 736 } |
734 } | 737 } |
735 | 738 |
736 return is_default != 0; | 739 return is_default != 0; |
737 } | 740 } |
738 | 741 |
739 RendererType RendererTypeForUrl(const std::wstring& url) { | 742 RendererType RendererTypeForUrl(const std::wstring& url) { |
740 // First check if the default renderer settings are specified by policy. | 743 // First check if the default renderer settings are specified by policy. |
741 // If so, then that overrides the user settings. | 744 // If so, then that overrides the user settings. |
742 PolicySettings::RendererForUrl renderer = | 745 PolicySettings::RendererForUrl renderer = |
743 PolicySettings::GetInstance()->GetRendererForUrl(url.c_str()); | 746 PolicySettings::GetInstance()->GetRendererForUrl(url.c_str()); |
744 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { | 747 if (renderer != PolicySettings::RENDERER_NOT_SPECIFIED) { |
745 // We may know at this point that policy says do NOT render in Chrome Frame. | 748 // We may know at this point that policy says do NOT render in Chrome Frame. |
746 // To maintain consistency, we return RENDERER_TYPE_UNDETERMINED so that | 749 // To maintain consistency, we return RENDERER_TYPE_UNDETERMINED so that |
747 // content sniffing, etc. still take place. | 750 // content sniffing, etc. still take place. |
748 // TODO(tommi): Clarify the intent here. | 751 // TODO(tommi): Clarify the intent here. |
749 return (renderer == PolicySettings::RENDER_IN_CHROME_FRAME) ? | 752 return (renderer == PolicySettings::RENDER_IN_CHROME_FRAME) ? |
750 RENDERER_TYPE_CHROME_OPT_IN_URL : RENDERER_TYPE_UNDETERMINED; | 753 RENDERER_TYPE_CHROME_OPT_IN_URL : RENDERER_TYPE_UNDETERMINED; |
751 } | 754 } |
752 | 755 |
753 RegKey config_key; | 756 RegKey config_key; |
754 if (!config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_READ)) | 757 LONG result = config_key.Open(HKEY_CURRENT_USER, kChromeFrameConfigKey, |
758 KEY_READ); | |
759 if (result != ERROR_SUCCESS) | |
755 return RENDERER_TYPE_UNDETERMINED; | 760 return RENDERER_TYPE_UNDETERMINED; |
756 | 761 |
757 RendererType renderer_type = RENDERER_TYPE_UNDETERMINED; | 762 RendererType renderer_type = RENDERER_TYPE_UNDETERMINED; |
758 | 763 |
759 const wchar_t* url_list_name = NULL; | 764 const wchar_t* url_list_name = NULL; |
760 int render_in_cf_by_default = FALSE; | 765 int render_in_cf_by_default = FALSE; |
761 config_key.ReadValueDW(kEnableGCFRendererByDefault, | 766 config_key.ReadValueDW(kEnableGCFRendererByDefault, |
762 reinterpret_cast<DWORD*>(&render_in_cf_by_default)); | 767 reinterpret_cast<DWORD*>(&render_in_cf_by_default)); |
763 if (render_in_cf_by_default) { | 768 if (render_in_cf_by_default) { |
764 url_list_name = kRenderInHostUrlList; | 769 url_list_name = kRenderInHostUrlList; |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1565 ++url_list; | 1570 ++url_list; |
1566 } | 1571 } |
1567 } | 1572 } |
1568 | 1573 |
1569 std::wstring GetCurrentModuleVersion() { | 1574 std::wstring GetCurrentModuleVersion() { |
1570 scoped_ptr<FileVersionInfo> module_version_info( | 1575 scoped_ptr<FileVersionInfo> module_version_info( |
1571 FileVersionInfo::CreateFileVersionInfoForCurrentModule()); | 1576 FileVersionInfo::CreateFileVersionInfoForCurrentModule()); |
1572 DCHECK(module_version_info.get() != NULL); | 1577 DCHECK(module_version_info.get() != NULL); |
1573 return module_version_info->file_version(); | 1578 return module_version_info->file_version(); |
1574 } | 1579 } |
OLD | NEW |