Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Unified Diff: chrome_frame/vtable_patch_manager.h

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/utils.cc ('k') | chrome_frame/vtable_patch_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/vtable_patch_manager.h
diff --git a/chrome_frame/vtable_patch_manager.h b/chrome_frame/vtable_patch_manager.h
deleted file mode 100644
index 3e9e65b209b1ab3c02b055ac507a87485d45ad05..0000000000000000000000000000000000000000
--- a/chrome_frame/vtable_patch_manager.h
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2009 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_VTABLE_PATCH_MANAGER_H_
-#define CHROME_FRAME_VTABLE_PATCH_MANAGER_H_
-
-#include <windows.h>
-
-#include <list>
-
-#include "base/synchronization/lock.h"
-
-struct FunctionStub;
-
-// This namespace provides methods to patch VTable methods of COM interfaces.
-namespace vtable_patch {
-
-// Internal implementation, exposed only for testing.
-namespace internal {
-
-// Replaces *entry with new_proc iff *entry is curr_proc.
-// Returns true iff *entry was rewritten.
-// Note: does not crash on access violation.
-bool ReplaceFunctionPointer(void** entry, void* new_proc, void* curr_proc);
-
-} // namespace internal
-
-// This structure represents information about one VTable method.
-// We allocate an array of these structures per VTable that we patch to
-// remember the original method. We also use this structure to actually
-// describe the VTable patch functions
-struct MethodPatchInfo {
- int index_;
- PROC method_;
- FunctionStub* stub_;
-};
-
-// Patches methods in the passed in COM interface. The indexes of the
-// methods to patch and the actual patch functions are described in the
-// array pointed to by patches.
-// @param[in] unknown The pointer of the COM interface to patch
-// @param[in] patches An array of MethodPatchInfo structures describing
-// the methods to patch and the patch functions.
-// The last entry of patches must have index_ set to -1.
-HRESULT PatchInterfaceMethods(void* unknown, MethodPatchInfo* patches);
-
-// Using the patch info provided in |patches| the function goes through the
-// list of patched methods and modifies thunks so that they no longer point
-// to a hook method but rather go straight through to the original target.
-// The thunk itself is not destroyed to support chaining.
-// @param[in] patches An array of MethodPatchInfo structures describing
-// the methods to patch and the patch functions.
-// The last entry of patches must have index_ set to -1.
-HRESULT UnpatchInterfaceMethods(MethodPatchInfo* patches);
-
-// Disabled as we're not using it atm.
-#if 0
-// Used when dynamically patching zero or more (usually more than 1)
-// implementations of a particular interface.
-class DynamicPatchManager {
- public:
- explicit DynamicPatchManager(const MethodPatchInfo* patch_prototype);
- ~DynamicPatchManager();
-
- // Returns S_OK if the object was successfully patched, S_FALSE if it was
- // already patched or an error value if something bad happened.
- HRESULT PatchObject(void* unknown);
-
- bool UnpatchAll();
-
- protected:
- struct PatchedObject {
- void* vtable_;
- MethodPatchInfo patch_info_[1];
-
- // Used to match PatchedObject instances based on the vtable when
- // searching through the patch list.
- bool operator==(const PatchedObject& that) const {
- return vtable_ == that.vtable_;
- }
- };
-
- typedef std::list<PatchedObject*> PatchList;
- const MethodPatchInfo* patch_prototype_;
- mutable base::Lock patch_list_lock_;
- PatchList patch_list_;
-};
-#endif // disable DynamicPatchManager
-
-} // namespace vtable_patch
-
-// Begins the declaration of a VTable patch
-// @param IFName The name of the interface to patch
-#define BEGIN_VTABLE_PATCHES(IFName) \
- vtable_patch::MethodPatchInfo IFName##_PatchInfo[] = {
-// Defines a single method patch in a VTable
-// @param index The index of the method to patch
-// @param PatchFunction The patch function
-#define VTABLE_PATCH_ENTRY(index, PatchFunction) {\
- index, \
- reinterpret_cast<PROC>(PatchFunction), \
- NULL, \
- },
-
-#define DCHECK_IS_NOT_PATCHED(IFName) \
- for (vtable_patch::MethodPatchInfo* it = IFName##_PatchInfo; \
- it->index_ != -1; ++it) { \
- DCHECK(it->stub_ == NULL); \
- }
-
-#define DCHECK_IS_PATCHED(IFName) \
- for (vtable_patch::MethodPatchInfo* it = IFName##_PatchInfo; \
- it->index_ != -1; ++it) { \
- DCHECK(it->stub_ != NULL); \
- }
-
-// Checks if the interface is patched. Note that only the first method
-// is checked and subsequent methods are assumed to have the same state.
-#define IS_PATCHED(IFName) \
- (IFName##_PatchInfo[0].stub_ != NULL)
-
-// Ends the declaration of a VTable patch by adding an entry with
-// index set to -1.
-#define END_VTABLE_PATCHES() \
- -1, NULL, NULL \
- };
-
-#endif // CHROME_FRAME_VTABLE_PATCH_MANAGER_H_
« no previous file with comments | « chrome_frame/utils.cc ('k') | chrome_frame/vtable_patch_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698