|  | // 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 |