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

Unified Diff: chrome/common/mac/objc_zombie_unittest.mm

Issue 10913151: Remove runtime lookup of objc_setAssociatedObject (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review comments Created 8 years, 3 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/mac/objc_zombie_unittest.mm
diff --git a/chrome/common/mac/objc_zombie_unittest.mm b/chrome/common/mac/objc_zombie_unittest.mm
index 39d2ff136bcd542234d3e515742a4b38bd9494b1..05163038082217e13c2dc3f358129a83f994047f 100644
--- a/chrome/common/mac/objc_zombie_unittest.mm
+++ b/chrome/common/mac/objc_zombie_unittest.mm
@@ -4,6 +4,7 @@
#import <Cocoa/Cocoa.h>
#include <dlfcn.h>
+#include <objc/runtime.h>
#include "base/logging.h"
#import "base/memory/scoped_nsobject.h"
@@ -11,20 +12,6 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
-namespace {
-
-// Dynamically look up |objc_setAssociatedObject()|, which isn't
-// available until the 10.6 SDK.
-
-typedef void objc_setAssociatedObjectFn(id object, void *key, id value,
- int policy);
-objc_setAssociatedObjectFn* LookupSetAssociatedObjectFn() {
- return reinterpret_cast<objc_setAssociatedObjectFn*>(
- dlsym(RTLD_DEFAULT, "objc_setAssociatedObject"));
-}
-
-} // namespace
-
@interface ZombieCxxDestructTest : NSObject
{
scoped_nsobject<id> aRef_;
@@ -43,32 +30,18 @@ objc_setAssociatedObjectFn* LookupSetAssociatedObjectFn() {
@end
@interface ZombieAssociatedObjectTest : NSObject
-+ (BOOL)supportsAssociatedObjects;
- (id)initWithAssociatedObject:(id)anObject;
@end
@implementation ZombieAssociatedObjectTest
-+ (BOOL)supportsAssociatedObjects {
- if (LookupSetAssociatedObjectFn())
- return YES;
- return NO;
-}
-
- (id)initWithAssociatedObject:(id)anObject {
- self = [super init];
- if (self) {
- objc_setAssociatedObjectFn* fn = LookupSetAssociatedObjectFn();
- if (fn) {
- // Cribbed from 10.6 <objc/runtime.h>.
- static const int kObjcAssociationRetain = 01401;
-
- // The address of the variable itself is the unique key, the
- // contents don't matter.
- static char kAssociatedObjectKey = 'x';
-
- (*fn)(self, &kAssociatedObjectKey, anObject, kObjcAssociationRetain);
- }
+ if ((self = [super init])) {
+ // The address of the variable itself is the unique key, the
+ // contents don't matter.
+ static char kAssociatedObjectKey = 'x';
+ objc_setAssociatedObject(
+ self, &kAssociatedObjectKey, anObject, OBJC_ASSOCIATION_RETAIN);
}
return self;
}
@@ -103,15 +76,7 @@ TEST(ObjcZombieTest, CxxDestructors) {
// Verify that the associated objects are released when the object is
// released.
-// NOTE(shess): To test the negative, hardcode |g_objectDestruct| to
-// the 10.5 version in |ZombieInit()|, and run this test on 10.6.
TEST(ObjcZombieTest, AssociatedObjectsReleased) {
- if (![ZombieAssociatedObjectTest supportsAssociatedObjects]) {
- DLOG(ERROR)
- << "ObjcZombieTest.AssociatedObjectsReleased not supported on 10.5";
- return;
- }
-
scoped_nsobject<id> anObject([[NSObject alloc] init]);
EXPECT_EQ(1u, [anObject retainCount]);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698