blob: e72aca4f34d9bca24f7b19fdec314e7870c438fb [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/command_buffer/common/activity_flags.h"
#include "base/memory/unsafe_shared_memory_region.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace gpu {
TEST(ActivityFlagsTest, BasicUsage) {
// Create the host activity flags.
GpuProcessHostActivityFlags host_flags;
EXPECT_FALSE(
host_flags.IsFlagSet(ActivityFlagsBase::FLAG_LOADING_PROGRAM_BINARY));
// Create the service activity flags from host memory.
GpuProcessActivityFlags service_flags(host_flags.CloneRegion());
// Ensure we can set and re-set flags.
{
GpuProcessActivityFlags::ScopedSetFlag scoped_set_flag(
&service_flags, ActivityFlagsBase::FLAG_LOADING_PROGRAM_BINARY);
EXPECT_TRUE(
host_flags.IsFlagSet(ActivityFlagsBase::FLAG_LOADING_PROGRAM_BINARY));
}
EXPECT_FALSE(
host_flags.IsFlagSet(ActivityFlagsBase::FLAG_LOADING_PROGRAM_BINARY));
}
TEST(ActivityFlagsTest, NotInitialized) {
// Get the service activity flags without providing host memory.
GpuProcessActivityFlags service_flags{base::UnsafeSharedMemoryRegion()};
// Set/Unset should not crash.
{
GpuProcessActivityFlags::ScopedSetFlag scoped_set_flag(
&service_flags, ActivityFlagsBase::FLAG_LOADING_PROGRAM_BINARY);
}
}
} // namespace gpu