summaryrefslogtreecommitdiffstats
path: root/chrome_frame/module_utils.h
diff options
context:
space:
mode:
authorrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 13:50:03 +0000
committerrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-14 13:50:03 +0000
commit65927ef362b19674fa52541609e339752349042f (patch)
tree3f32e5fe75fb1562dcbcbab4c51e75bf40a07e9b /chrome_frame/module_utils.h
parent44a69f56d13585d17d3356d2a8b212a75fd14271 (diff)
downloadchromium_src-65927ef362b19674fa52541609e339752349042f.zip
chromium_src-65927ef362b19674fa52541609e339752349042f.tar.gz
chromium_src-65927ef362b19674fa52541609e339752349042f.tar.bz2
Revert 44473 (build breakage on bots) - Add multiversion delegation to Chrome Frame such that CF will scan for older versions on load and delegate to them. This is to support clean upgrade scenarios whereby a new version is registered while IE is running.
BUG=40117 TEST=Register a new CF version while an old one is loaded in IE. Open a few new tabs and observe nothing bad happening. Review URL: http://codereview.chromium.org/1562018 TBR=robertshield@chromium.org Review URL: http://codereview.chromium.org/1604035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/module_utils.h')
-rw-r--r--chrome_frame/module_utils.h80
1 files changed, 0 insertions, 80 deletions
diff --git a/chrome_frame/module_utils.h b/chrome_frame/module_utils.h
deleted file mode 100644
index e5d8a68..0000000
--- a/chrome_frame/module_utils.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_FRAME_MODULE_UTILS_H_
-#define CHROME_FRAME_MODULE_UTILS_H_
-
-#include <ObjBase.h>
-#include <windows.h>
-
-#include <map>
-
-// A helper class that will find the named loaded module in the current
-// process with the lowest version, increment its ref count and return
-// a pointer to its DllGetClassObject() function if it exports one. If
-// the oldest named module is the current module, then this class does nothing
-// (does not muck with module ref count) and calls to
-// get_dll_get_class_object_ptr() will return NULL.
-class DllRedirector {
- public:
- typedef std::map<std::wstring, HMODULE> PathToHModuleMap;
-
- DllRedirector();
- ~DllRedirector();
-
- // Must call this before calling get_dll_get_class_object_ptr(). On first call
- // this performs the work of scanning the loaded modules for an old version
- // to delegate to. Not thread safe.
- void EnsureInitialized(const wchar_t* module_name, REFCLSID clsid);
-
- LPFNGETCLASSOBJECT get_dll_get_class_object_ptr() const;
-
- private:
-
- // Returns the pointer to the named loaded module's DllGetClassObject export
- // or NULL if either the pointer could not be found or if the pointer would
- // point into the current module.
- // Sets module_handle_ and increments the modules reference count.
- //
- // For sanity's sake, the module must return a non-null class factory for
- // the given class id.
- LPFNGETCLASSOBJECT GetDllGetClassObjectFromModuleName(
- const wchar_t* module_name, REFCLSID clsid);
-
- // Returns a handle in |module_handle| to the loaded module called
- // |module_name| in the current process. If there are multiple modules with
- // the same name, it returns the module with the oldest version number in its
- // VERSIONINFO block. The version string is expected to be of a form that
- // base::Version can parse.
- //
- // For sanity's sake, when there are multiple instances of the module,
- // |product_short_name|, if non-NULL, must match the module's
- // ProductShortName value
- //
- // Returns true if a named module with the given ProductShortName can be
- // found, returns false otherwise. Can return the current module handle.
- bool GetOldestNamedModuleHandle(const std::wstring& module_name,
- REFCLSID clsid,
- HMODULE* module_handle);
-
- // Given a PathToBaseAddressMap, iterates over the module images whose paths
- // are the keys and returns the handle to the module with the lowest
- // version number in its VERSIONINFO block whose DllGetClassObject returns a
- // class factory for the given CLSID.
- HMODULE GetHandleOfOldestModule(const PathToHModuleMap& map, REFCLSID clsid);
-
- private:
- // Helper function to return the DllGetClassObject function pointer from
- // the given module. On success, the return value is non-null and module
- // will have had its reference count incremented.
- LPFNGETCLASSOBJECT GetDllGetClassObjectPtr(HMODULE module);
-
- HMODULE module_handle_;
- LPFNGETCLASSOBJECT dcgo_ptr_;
- bool initialized_;
-
- friend class ModuleUtilsTest;
-};
-
-#endif // CHROME_FRAME_MODULE_UTILS_H_