OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include <stddef.h> | |
6 #include <stdint.h> | |
7 | |
8 #include "content/common/gpu/gpu_channel.h" | |
9 #include "content/common/gpu/gpu_channel_manager.h" | |
10 #include "content/common/gpu/gpu_channel_test_common.h" | |
11 #include "gpu/command_buffer/common/value_state.h" | |
12 #include "gpu/command_buffer/service/gl_utils.h" | |
13 #include "gpu/command_buffer/service/valuebuffer_manager.h" | |
14 | |
15 using gpu::gles2::ValuebufferManager; | |
16 using gpu::ValueState; | |
17 | |
18 namespace content { | |
19 | |
20 class GpuChannelManagerTest : public GpuChannelTestCommon { | |
21 public: | |
22 GpuChannelManagerTest() : GpuChannelTestCommon() {} | |
23 ~GpuChannelManagerTest() override {} | |
24 }; | |
25 | |
26 TEST_F(GpuChannelManagerTest, EstablishChannel) { | |
27 int32_t kClientId = 1; | |
28 uint64_t kClientTracingId = 1; | |
29 | |
30 ASSERT_TRUE(channel_manager()); | |
31 | |
32 IPC::ChannelHandle channel_handle = channel_manager()->EstablishChannel( | |
33 kClientId, kClientTracingId, false /* preempts */, | |
34 false /* allow_view_command_buffers */, | |
35 false /* allow_real_time_streams */); | |
36 EXPECT_NE("", channel_handle.name); | |
37 | |
38 GpuChannel* channel = channel_manager()->LookupChannel(kClientId); | |
39 ASSERT_TRUE(channel); | |
40 EXPECT_EQ(channel_handle.name, channel->channel_id()); | |
41 } | |
42 | |
43 TEST_F(GpuChannelManagerTest, SecureValueStateForwarding) { | |
44 int32_t kClientId1 = 111; | |
45 uint64_t kClientTracingId1 = 11111; | |
46 int32_t kClientId2 = 222; | |
47 uint64_t kClientTracingId2 = 22222; | |
48 ValueState value_state1; | |
49 value_state1.int_value[0] = 1111; | |
50 value_state1.int_value[1] = 0; | |
51 value_state1.int_value[2] = 0; | |
52 value_state1.int_value[3] = 0; | |
53 ValueState value_state2; | |
54 value_state2.int_value[0] = 3333; | |
55 value_state2.int_value[1] = 0; | |
56 value_state2.int_value[2] = 0; | |
57 value_state2.int_value[3] = 0; | |
58 | |
59 ASSERT_TRUE(channel_manager()); | |
60 | |
61 // Initialize gpu channels | |
62 channel_manager()->EstablishChannel(kClientId1, kClientTracingId1, | |
63 false /* preempts */, | |
64 false /* allow_view_command_buffer */, | |
65 false /* allow_real_time_streams */); | |
66 GpuChannel* channel1 = channel_manager()->LookupChannel(kClientId1); | |
67 ASSERT_TRUE(channel1); | |
68 | |
69 channel_manager()->EstablishChannel(kClientId2, kClientTracingId2, | |
70 false /* preempts */, | |
71 false /* allow_view_command_buffers */, | |
72 false /* allow_real_time_streams */); | |
73 GpuChannel* channel2 = channel_manager()->LookupChannel(kClientId2); | |
74 ASSERT_TRUE(channel2); | |
75 | |
76 EXPECT_NE(channel1, channel2); | |
77 | |
78 // Make sure value states are only accessible by proper channels | |
79 channel_manager()->UpdateValueState(kClientId1, GL_MOUSE_POSITION_CHROMIUM, | |
80 value_state1); | |
81 channel_manager()->UpdateValueState(kClientId2, GL_MOUSE_POSITION_CHROMIUM, | |
82 value_state2); | |
83 | |
84 const gpu::ValueStateMap* pending_value_buffer_state1 = | |
85 channel1->pending_valuebuffer_state(); | |
86 const gpu::ValueStateMap* pending_value_buffer_state2 = | |
87 channel2->pending_valuebuffer_state(); | |
88 EXPECT_NE(pending_value_buffer_state1, pending_value_buffer_state2); | |
89 | |
90 const ValueState* state1 = | |
91 pending_value_buffer_state1->GetState(GL_MOUSE_POSITION_CHROMIUM); | |
92 const ValueState* state2 = | |
93 pending_value_buffer_state2->GetState(GL_MOUSE_POSITION_CHROMIUM); | |
94 EXPECT_NE(state1, state2); | |
95 | |
96 EXPECT_EQ(state1->int_value[0], value_state1.int_value[0]); | |
97 EXPECT_EQ(state2->int_value[0], value_state2.int_value[0]); | |
98 EXPECT_NE(state1->int_value[0], state2->int_value[0]); | |
99 } | |
100 | |
101 } // namespace content | |
OLD | NEW |