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

Unified Diff: content/browser/mac/closure_blocks_leopard_compat_unittest.cc

Issue 9549012: Move closure_blocks_leopard_compat to base now that it's used by two modules. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 10 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
Index: content/browser/mac/closure_blocks_leopard_compat_unittest.cc
===================================================================
--- content/browser/mac/closure_blocks_leopard_compat_unittest.cc (revision 124212)
+++ content/browser/mac/closure_blocks_leopard_compat_unittest.cc (working copy)
@@ -1,98 +0,0 @@
-// Copyright (c) 2011 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.
-
-#include "testing/gtest/include/gtest/gtest.h"
-
-#include "base/mac/mac_util.h"
-#include "content/browser/mac/closure_blocks_leopard_compat.h"
-
-// Used in ClosureBlocksLeopardCompatTest.Global. Putting a block at global
-// scope results in a block structure whose isa field is set to
-// NSConcreteGlobalBlock, ensuring that symbol is referenced. This test needs
-// to be able to load on 10.5 where that symbol is not present at runtime, so
-// the real test here is that the symbol is weakly imported. If not, the
-// executable will fail to load.
-void (^global_block)(bool*) = ^(bool* ran_pointer) { *ran_pointer = true; };
-
-namespace {
-
-// It should be possible to declare a block on OSes as early as Leopard
-// (10.5). This should be buildable with the 10.5 SDK and a 10.5 deployment
-// target, and runnable on 10.5. However, the block itself is not expected to
-// be runnable on 10.5. This test verfies that blocks are buildable on 10.5
-// and runnable on Snow Leopard (10.6) and later.
-
-TEST(ClosureBlocksLeopardCompatTest, Stack) {
- bool ran = false;
-
- // This should result in a block structure whose isa field is set to
- // NSConcreteStackBlock, ensuring that symbol is referenced. This test
- // needs to be able to load on 10.5 where that symbol is not present at
- // runtime, so the real test here checks that the symbol is weakly imported.
- // If not, the executable will fail to load.
-
- void (^test_block)(bool*) = ^(bool* ran_pointer) { *ran_pointer = true; };
-
- ASSERT_FALSE(ran);
-
- if (base::mac::IsOSSnowLeopardOrLater()) {
- test_block(&ran);
-
- EXPECT_TRUE(ran);
- }
-}
-
-TEST(ClosureBlocksLeopardCompatTest, Global) {
- bool ran = false;
-
- ASSERT_FALSE(ran);
-
- if (base::mac::IsOSSnowLeopardOrLater()) {
- global_block(&ran);
-
- EXPECT_TRUE(ran);
- }
-}
-
-TEST(ClosureBlocksLeopardCompatTest, CopyRelease) {
- if (base::mac::IsOSSnowLeopardOrLater()) {
- // Protect the entire test in this conditional, because __block won't run
- // on 10.5.
- __block int value = 0;
-
- typedef int (^TestBlockType)();
- TestBlockType local_block = ^(void) { return ++value; };
-
- ASSERT_EQ(0, value);
-
- int rv = local_block();
- EXPECT_EQ(1, rv);
- EXPECT_EQ(rv, value);
-
- // Using Block_copy, Block_release, and these other operations ensures
- // that _Block_copy, _Block_release, _Block_object_assign, and
- // _Block_object_dispose are referenced. This test needs to be able to
- // load on 10.5 where these symbols are not present at runtime, so the
- // real test here is that the symbol is weakly imported. If not, the
- // executable will fail to load.
-
- TestBlockType copied_block = Block_copy(local_block);
-
- rv = copied_block();
- EXPECT_EQ(2, rv);
- EXPECT_EQ(rv, value);
-
- rv = copied_block();
- EXPECT_EQ(3, rv);
- EXPECT_EQ(rv, value);
-
- Block_release(copied_block);
-
- rv = local_block();
- EXPECT_EQ(4, rv);
- EXPECT_EQ(rv, value);
- }
-}
-
-} // namespace

Powered by Google App Engine
This is Rietveld 408576698