OLD | NEW |
---|---|
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "content/common/gpu/establish_channel_params.h" | |
8 #include "content/common/gpu/gpu_channel.h" | 9 #include "content/common/gpu/gpu_channel.h" |
9 #include "content/common/gpu/gpu_channel_manager.h" | 10 #include "content/common/gpu/gpu_channel_manager.h" |
10 #include "content/common/gpu/gpu_channel_test_common.h" | 11 #include "content/common/gpu/gpu_channel_test_common.h" |
11 #include "content/common/gpu/gpu_messages.h" | 12 #include "content/common/gpu/gpu_messages.h" |
no sievers
2016/02/19 19:46:23
...and we don't need to include gpu_messages.h any
Fady Samuel
2016/02/19 20:33:30
Done.
| |
12 #include "gpu/command_buffer/common/value_state.h" | 13 #include "gpu/command_buffer/common/value_state.h" |
13 #include "gpu/command_buffer/service/gl_utils.h" | 14 #include "gpu/command_buffer/service/gl_utils.h" |
14 #include "gpu/command_buffer/service/valuebuffer_manager.h" | 15 #include "gpu/command_buffer/service/valuebuffer_manager.h" |
15 #include "ipc/ipc_test_sink.h" | 16 #include "ipc/ipc_test_sink.h" |
16 | 17 |
17 using gpu::gles2::ValuebufferManager; | 18 using gpu::gles2::ValuebufferManager; |
18 using gpu::ValueState; | 19 using gpu::ValueState; |
19 | 20 |
20 namespace content { | 21 namespace content { |
21 | 22 |
22 class GpuChannelManagerTest : public GpuChannelTestCommon { | 23 class GpuChannelManagerTest : public GpuChannelTestCommon { |
23 public: | 24 public: |
24 GpuChannelManagerTest() : GpuChannelTestCommon() {} | 25 GpuChannelManagerTest() : GpuChannelTestCommon() {} |
25 ~GpuChannelManagerTest() override {} | 26 ~GpuChannelManagerTest() override {} |
26 }; | 27 }; |
27 | 28 |
28 TEST_F(GpuChannelManagerTest, EstablishChannel) { | 29 TEST_F(GpuChannelManagerTest, EstablishChannel) { |
29 int32_t kClientId = 1; | 30 int32_t kClientId = 1; |
30 uint64_t kClientTracingId = 1; | 31 uint64_t kClientTracingId = 1; |
31 | 32 |
32 ASSERT_TRUE(channel_manager()); | 33 ASSERT_TRUE(channel_manager()); |
33 | 34 |
34 GpuMsg_EstablishChannel_Params params; | 35 EstablishChannelParams params; |
35 params.client_id = kClientId; | 36 params.client_id = kClientId; |
36 params.client_tracing_id = kClientTracingId; | 37 params.client_tracing_id = kClientTracingId; |
37 params.preempts = false; | 38 params.preempts = false; |
38 params.allow_view_command_buffers = false; | 39 params.allow_view_command_buffers = false; |
39 params.allow_real_time_streams = false; | 40 params.allow_real_time_streams = false; |
40 EXPECT_TRUE( | 41 channel_manager()->EstablishChannel(params); |
41 channel_manager()->OnMessageReceived(GpuMsg_EstablishChannel(params))); | 42 IPC::ChannelHandle handle = |
42 EXPECT_EQ((size_t)1, sink()->message_count()); | 43 channel_manager_delegate()->last_established_channel_handle(); |
43 const IPC::Message* msg = | 44 EXPECT_NE("", handle.name); |
44 sink()->GetUniqueMessageMatching(GpuHostMsg_ChannelEstablished::ID); | |
45 ASSERT_TRUE(msg); | |
46 base::Tuple<IPC::ChannelHandle> handle; | |
47 ASSERT_TRUE(GpuHostMsg_ChannelEstablished::Read(msg, &handle)); | |
48 EXPECT_NE("", base::get<0>(handle).name); | |
49 sink()->ClearMessages(); | |
50 | 45 |
51 GpuChannel* channel = channel_manager()->LookupChannel(kClientId); | 46 GpuChannel* channel = channel_manager()->LookupChannel(kClientId); |
52 ASSERT_TRUE(channel); | 47 ASSERT_TRUE(channel); |
53 EXPECT_EQ(base::get<0>(handle).name, channel->channel_id()); | 48 EXPECT_EQ(handle.name, channel->channel_id()); |
54 } | 49 } |
55 | 50 |
56 TEST_F(GpuChannelManagerTest, SecureValueStateForwarding) { | 51 TEST_F(GpuChannelManagerTest, SecureValueStateForwarding) { |
57 int32_t kClientId1 = 111; | 52 int32_t kClientId1 = 111; |
58 uint64_t kClientTracingId1 = 11111; | 53 uint64_t kClientTracingId1 = 11111; |
59 int32_t kClientId2 = 222; | 54 int32_t kClientId2 = 222; |
60 uint64_t kClientTracingId2 = 22222; | 55 uint64_t kClientTracingId2 = 22222; |
61 ValueState value_state1; | 56 ValueState value_state1; |
62 value_state1.int_value[0] = 1111; | 57 value_state1.int_value[0] = 1111; |
63 value_state1.int_value[1] = 0; | 58 value_state1.int_value[1] = 0; |
64 value_state1.int_value[2] = 0; | 59 value_state1.int_value[2] = 0; |
65 value_state1.int_value[3] = 0; | 60 value_state1.int_value[3] = 0; |
66 ValueState value_state2; | 61 ValueState value_state2; |
67 value_state2.int_value[0] = 3333; | 62 value_state2.int_value[0] = 3333; |
68 value_state2.int_value[1] = 0; | 63 value_state2.int_value[1] = 0; |
69 value_state2.int_value[2] = 0; | 64 value_state2.int_value[2] = 0; |
70 value_state2.int_value[3] = 0; | 65 value_state2.int_value[3] = 0; |
71 | 66 |
72 ASSERT_TRUE(channel_manager()); | 67 ASSERT_TRUE(channel_manager()); |
73 | 68 |
74 // Initialize gpu channels | 69 // Initialize gpu channels |
75 GpuMsg_EstablishChannel_Params params; | 70 EstablishChannelParams params; |
76 params.client_id = kClientId1; | 71 params.client_id = kClientId1; |
77 params.client_tracing_id = kClientTracingId1; | 72 params.client_tracing_id = kClientTracingId1; |
78 params.preempts = false; | 73 params.preempts = false; |
79 params.allow_view_command_buffers = false; | 74 params.allow_view_command_buffers = false; |
80 params.allow_real_time_streams = false; | 75 params.allow_real_time_streams = false; |
81 EXPECT_TRUE( | 76 channel_manager()->EstablishChannel(params); |
82 channel_manager()->OnMessageReceived(GpuMsg_EstablishChannel(params))); | |
83 GpuChannel* channel1 = channel_manager()->LookupChannel(kClientId1); | 77 GpuChannel* channel1 = channel_manager()->LookupChannel(kClientId1); |
84 ASSERT_TRUE(channel1); | 78 ASSERT_TRUE(channel1); |
85 | 79 |
86 params.client_id = kClientId2; | 80 params.client_id = kClientId2; |
87 params.client_tracing_id = kClientTracingId2; | 81 params.client_tracing_id = kClientTracingId2; |
88 EXPECT_TRUE( | 82 channel_manager()->EstablishChannel(params); |
89 channel_manager()->OnMessageReceived(GpuMsg_EstablishChannel(params))); | |
90 GpuChannel* channel2 = channel_manager()->LookupChannel(kClientId2); | 83 GpuChannel* channel2 = channel_manager()->LookupChannel(kClientId2); |
91 ASSERT_TRUE(channel2); | 84 ASSERT_TRUE(channel2); |
92 | 85 |
93 EXPECT_NE(channel1, channel2); | 86 EXPECT_NE(channel1, channel2); |
94 | 87 |
95 // Make sure value states are only accessible by proper channels | 88 // Make sure value states are only accessible by proper channels |
96 channel_manager()->OnMessageReceived(GpuMsg_UpdateValueState( | 89 channel_manager()->UpdateValueState(kClientId1, GL_MOUSE_POSITION_CHROMIUM, |
97 kClientId1, GL_MOUSE_POSITION_CHROMIUM, value_state1)); | 90 value_state1); |
98 channel_manager()->OnMessageReceived(GpuMsg_UpdateValueState( | 91 channel_manager()->UpdateValueState(kClientId2, GL_MOUSE_POSITION_CHROMIUM, |
99 kClientId2, GL_MOUSE_POSITION_CHROMIUM, value_state2)); | 92 value_state2); |
100 | 93 |
101 const gpu::ValueStateMap* pending_value_buffer_state1 = | 94 const gpu::ValueStateMap* pending_value_buffer_state1 = |
102 channel1->pending_valuebuffer_state(); | 95 channel1->pending_valuebuffer_state(); |
103 const gpu::ValueStateMap* pending_value_buffer_state2 = | 96 const gpu::ValueStateMap* pending_value_buffer_state2 = |
104 channel2->pending_valuebuffer_state(); | 97 channel2->pending_valuebuffer_state(); |
105 EXPECT_NE(pending_value_buffer_state1, pending_value_buffer_state2); | 98 EXPECT_NE(pending_value_buffer_state1, pending_value_buffer_state2); |
106 | 99 |
107 const ValueState* state1 = | 100 const ValueState* state1 = |
108 pending_value_buffer_state1->GetState(GL_MOUSE_POSITION_CHROMIUM); | 101 pending_value_buffer_state1->GetState(GL_MOUSE_POSITION_CHROMIUM); |
109 const ValueState* state2 = | 102 const ValueState* state2 = |
110 pending_value_buffer_state2->GetState(GL_MOUSE_POSITION_CHROMIUM); | 103 pending_value_buffer_state2->GetState(GL_MOUSE_POSITION_CHROMIUM); |
111 EXPECT_NE(state1, state2); | 104 EXPECT_NE(state1, state2); |
112 | 105 |
113 EXPECT_EQ(state1->int_value[0], value_state1.int_value[0]); | 106 EXPECT_EQ(state1->int_value[0], value_state1.int_value[0]); |
114 EXPECT_EQ(state2->int_value[0], value_state2.int_value[0]); | 107 EXPECT_EQ(state2->int_value[0], value_state2.int_value[0]); |
115 EXPECT_NE(state1->int_value[0], state2->int_value[0]); | 108 EXPECT_NE(state1->int_value[0], state2->int_value[0]); |
116 } | 109 } |
117 | 110 |
118 } // namespace content | 111 } // namespace content |
OLD | NEW |