summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorenne <enne@chromium.org>2016-03-25 11:42:11 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-25 18:43:37 +0000
commit37a519748d7fef8a95eb513e9768c9523c744274 (patch)
tree117c509eb23d2a83e5cb427229b560eafe77a4da /cc
parenta06c9a7f20924ba6a91e71da82c5270570c493d5 (diff)
downloadchromium_src-37a519748d7fef8a95eb513e9768c9523c744274.zip
chromium_src-37a519748d7fef8a95eb513e9768c9523c744274.tar.gz
chromium_src-37a519748d7fef8a95eb513e9768c9523c744274.tar.bz2
Add SurfaceId::id_namespace()
This ties SurfaceIdAllocator to SurfaceId, such that it is now the only valid allocator for SurfaceIds. R=jbauman@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1834583004 Cr-Commit-Position: refs/heads/master@{#383323}
Diffstat (limited to 'cc')
-rw-r--r--cc/surfaces/surface_id.h3
-rw-r--r--cc/surfaces/surface_unittest.cc14
2 files changed, 17 insertions, 0 deletions
diff --git a/cc/surfaces/surface_id.h b/cc/surfaces/surface_id.h
index c0c4410..bbc485f 100644
--- a/cc/surfaces/surface_id.h
+++ b/cc/surfaces/surface_id.h
@@ -18,6 +18,9 @@ struct SurfaceId {
bool is_null() const { return id == 0; }
+ // See SurfaceIdAllocator::GenerateId.
+ uint32_t id_namespace() const { return id >> 32; }
+
uint64_t id;
};
diff --git a/cc/surfaces/surface_unittest.cc b/cc/surfaces/surface_unittest.cc
index 72070c6..03ffc3a 100644
--- a/cc/surfaces/surface_unittest.cc
+++ b/cc/surfaces/surface_unittest.cc
@@ -5,6 +5,7 @@
#include "cc/surfaces/surface.h"
#include "cc/surfaces/surface_factory.h"
#include "cc/surfaces/surface_factory_client.h"
+#include "cc/surfaces/surface_id_allocator.h"
#include "cc/surfaces/surface_manager.h"
#include "cc/test/scheduler_test_common.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -44,5 +45,18 @@ TEST(SurfaceTest, SurfaceLifetime) {
EXPECT_EQ(NULL, manager.GetSurfaceForId(surface_id));
}
+TEST(SurfaceTest, SurfaceIds) {
+ uint32_t namespaces[] = {0u, 37u, ~0u};
+ for (size_t i = 0; i < 3; ++i) {
+ uint32_t id_namespace = namespaces[i];
+ SurfaceIdAllocator allocator(id_namespace);
+ SurfaceId id1 = allocator.GenerateId();
+ EXPECT_EQ(id1.id_namespace(), id_namespace);
+ SurfaceId id2 = allocator.GenerateId();
+ EXPECT_EQ(id2.id_namespace(), id_namespace);
+ EXPECT_NE(id1.id, id2.id);
+ }
+}
+
} // namespace
} // namespace cc