summaryrefslogtreecommitdiffstats
path: root/chrome_frame/utils.cc
diff options
context:
space:
mode:
authorrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-11 20:39:18 +0000
committerrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-11 20:39:18 +0000
commitc41468f5e92ef7bcc7f223b809b9eab5ccf78635 (patch)
tree529f884cc317376e8972418a0e423603c303962c /chrome_frame/utils.cc
parentd62373fa58514f213ed116ae984eaae942dce018 (diff)
downloadchromium_src-c41468f5e92ef7bcc7f223b809b9eab5ccf78635.zip
chromium_src-c41468f5e92ef7bcc7f223b809b9eab5ccf78635.tar.gz
chromium_src-c41468f5e92ef7bcc7f223b809b9eab5ccf78635.tar.bz2
Add NPAPI plugin registration persistence code to chrome frame. If the DLL is already registered as an NPAPI plugin, keep that registration information up to date across updates.
Review URL: http://codereview.chromium.org/385015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31697 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/utils.cc')
-rw-r--r--chrome_frame/utils.cc47
1 files changed, 47 insertions, 0 deletions
diff --git a/chrome_frame/utils.cc b/chrome_frame/utils.cc
index 36200ae..aa24c1a 100644
--- a/chrome_frame/utils.cc
+++ b/chrome_frame/utils.cc
@@ -15,6 +15,7 @@
#include "base/scoped_comptr_win.h"
#include "base/string_util.h"
#include "chrome/common/url_constants.h"
+#include "chrome/installer/util/chrome_frame_distribution.h"
#include "googleurl/src/gurl.h"
#include "grit/chrome_frame_resources.h"
#include "chrome_frame/resource.h"
@@ -33,6 +34,10 @@ static const wchar_t kChromeFrameConfigKey[] =
L"Software\\Google\\ChromeFrame";
static const wchar_t kChromeFrameOptinUrlsKey[] = L"OptinUrls";
+static const wchar_t kChromeFrameNPAPIKey[] =
+ L"Software\\MozillaPlugins\\@google.com/ChromeFrame,version=1.0";
+static const wchar_t kChromeFramePersistNPAPIReg[] = L"PersistNPAPIReg";
+
// Used to isolate chrome frame builds from google chrome release channels.
const wchar_t kChromeFrameOmahaSuffix[] = L"-cf";
const wchar_t kDevChannelName[] = L"-dev";
@@ -145,6 +150,48 @@ HRESULT UtilUnRegisterTypeLib(ITypeLib* typelib,
return hr;
}
+bool UtilIsNPAPIPluginRegistered() {
+ std::wstring npapi_key_name(kChromeFrameNPAPIKey);
+ RegKey npapi_key(HKEY_LOCAL_MACHINE, npapi_key_name.c_str(), KEY_QUERY_VALUE);
+ return npapi_key.Valid();
+}
+
+bool UtilChangePersistentNPAPIMarker(bool set) {
+ BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution();
+ std::wstring cf_state_key_path(cf_dist->GetStateKey());
+
+ RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(),
+ KEY_READ | KEY_WRITE);
+
+ bool success = false;
+ if (cf_state_key.Valid()) {
+ if (set) {
+ success = cf_state_key.WriteValue(kChromeFramePersistNPAPIReg, 1);
+ } else {
+ success = cf_state_key.DeleteValue(kChromeFramePersistNPAPIReg);
+ }
+ }
+ return success;
+}
+
+bool UtilIsPersistentNPAPIMarkerSet() {
+ BrowserDistribution* cf_dist = BrowserDistribution::GetDistribution();
+ std::wstring cf_state_key_path(cf_dist->GetStateKey());
+
+ RegKey cf_state_key(HKEY_LOCAL_MACHINE, cf_state_key_path.c_str(),
+ KEY_QUERY_VALUE);
+
+ bool success = false;
+ if (cf_state_key.Valid()) {
+ DWORD val = 0;
+ if (cf_state_key.ReadValueDW(kChromeFramePersistNPAPIReg, &val)) {
+ success = (val != 0);
+ }
+ }
+ return success;
+}
+
+
HRESULT UtilGetXUACompatContentValue(const std::wstring& html_string,
std::wstring* content_value) {
if (!content_value) {