OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ppapi/proxy/raw_var_data.h" | 5 #include "ppapi/proxy/raw_var_data.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 } | 89 } |
90 | 90 |
91 TEST_F(RawVarDataTest, StringTest) { | 91 TEST_F(RawVarDataTest, StringTest) { |
92 EXPECT_TRUE(WriteReadAndCompare(StringVar::StringToPPVar(""))); | 92 EXPECT_TRUE(WriteReadAndCompare(StringVar::StringToPPVar(""))); |
93 EXPECT_TRUE(WriteReadAndCompare(StringVar::StringToPPVar("hello world!"))); | 93 EXPECT_TRUE(WriteReadAndCompare(StringVar::StringToPPVar("hello world!"))); |
94 } | 94 } |
95 | 95 |
96 TEST_F(RawVarDataTest, ArrayBufferTest) { | 96 TEST_F(RawVarDataTest, ArrayBufferTest) { |
97 std::string data = "hello world!"; | 97 std::string data = "hello world!"; |
98 PP_Var var = PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( | 98 PP_Var var = PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( |
99 data.size(), data.data()); | 99 static_cast<uint32_t>(data.size()), data.data()); |
100 EXPECT_TRUE(WriteReadAndCompare(var)); | 100 EXPECT_TRUE(WriteReadAndCompare(var)); |
101 var = PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( | 101 var = PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( |
102 0, static_cast<void*>(NULL)); | 102 0, static_cast<void*>(NULL)); |
103 EXPECT_TRUE(WriteReadAndCompare(var)); | 103 EXPECT_TRUE(WriteReadAndCompare(var)); |
104 // TODO(raymes): add tests for shmem type array buffers. | 104 // TODO(raymes): add tests for shmem type array buffers. |
105 } | 105 } |
106 | 106 |
107 TEST_F(RawVarDataTest, DictionaryArrayTest) { | 107 TEST_F(RawVarDataTest, DictionaryArrayTest) { |
108 // Empty array. | 108 // Empty array. |
109 scoped_refptr<ArrayVar> array(new ArrayVar); | 109 scoped_refptr<ArrayVar> array(new ArrayVar); |
110 ScopedPPVar release_array(ScopedPPVar::PassRef(), array->GetPPVar()); | 110 ScopedPPVar release_array(ScopedPPVar::PassRef(), array->GetPPVar()); |
111 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 111 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
112 | 112 |
113 size_t index = 0; | 113 size_t index = 0; |
114 | 114 |
115 // Array with primitives. | 115 // Array with primitives. |
116 array->Set(index++, PP_MakeUndefined()); | 116 array->Set(static_cast<uint32_t>(index++), PP_MakeUndefined()); |
117 array->Set(index++, PP_MakeNull()); | 117 array->Set(static_cast<uint32_t>(index++), PP_MakeNull()); |
118 array->Set(index++, PP_MakeInt32(100)); | 118 array->Set(static_cast<uint32_t>(index++), PP_MakeInt32(100)); |
119 array->Set(index++, PP_MakeBool(PP_FALSE)); | 119 array->Set(static_cast<uint32_t>(index++), PP_MakeBool(PP_FALSE)); |
120 array->Set(index++, PP_MakeDouble(0.123)); | 120 array->Set(static_cast<uint32_t>(index++), PP_MakeDouble(0.123)); |
121 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 121 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
122 | 122 |
123 // Array with 2 references to the same string. | 123 // Array with 2 references to the same string. |
124 ScopedPPVar release_string( | 124 ScopedPPVar release_string( |
125 ScopedPPVar::PassRef(), StringVar::StringToPPVar("abc")); | 125 ScopedPPVar::PassRef(), StringVar::StringToPPVar("abc")); |
126 array->Set(index++, release_string.get()); | 126 array->Set(static_cast<uint32_t>(index++), release_string.get()); |
127 array->Set(index++, release_string.get()); | 127 array->Set(static_cast<uint32_t>(index++), release_string.get()); |
128 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 128 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
129 | 129 |
130 // Array with nested array that references the same string. | 130 // Array with nested array that references the same string. |
131 scoped_refptr<ArrayVar> array2(new ArrayVar); | 131 scoped_refptr<ArrayVar> array2(new ArrayVar); |
132 ScopedPPVar release_array2(ScopedPPVar::PassRef(), array2->GetPPVar()); | 132 ScopedPPVar release_array2(ScopedPPVar::PassRef(), array2->GetPPVar()); |
133 array2->Set(0, release_string.get()); | 133 array2->Set(0, release_string.get()); |
134 array->Set(index++, release_array2.get()); | 134 array->Set(static_cast<uint32_t>(index++), release_array2.get()); |
135 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 135 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
136 | 136 |
137 // Empty dictionary. | 137 // Empty dictionary. |
138 scoped_refptr<DictionaryVar> dictionary(new DictionaryVar); | 138 scoped_refptr<DictionaryVar> dictionary(new DictionaryVar); |
139 ScopedPPVar release_dictionary(ScopedPPVar::PassRef(), | 139 ScopedPPVar release_dictionary(ScopedPPVar::PassRef(), |
140 dictionary->GetPPVar()); | 140 dictionary->GetPPVar()); |
141 EXPECT_TRUE(WriteReadAndCompare(dictionary->GetPPVar())); | 141 EXPECT_TRUE(WriteReadAndCompare(dictionary->GetPPVar())); |
142 | 142 |
143 // Dictionary with primitives. | 143 // Dictionary with primitives. |
144 dictionary->SetWithStringKey("1", PP_MakeUndefined()); | 144 dictionary->SetWithStringKey("1", PP_MakeUndefined()); |
(...skipping 10 matching lines...) Expand all Loading... |
155 | 155 |
156 // Dictionary with nested dictionary that references the same string. | 156 // Dictionary with nested dictionary that references the same string. |
157 scoped_refptr<DictionaryVar> dictionary2(new DictionaryVar); | 157 scoped_refptr<DictionaryVar> dictionary2(new DictionaryVar); |
158 ScopedPPVar release_dictionary2(ScopedPPVar::PassRef(), | 158 ScopedPPVar release_dictionary2(ScopedPPVar::PassRef(), |
159 dictionary2->GetPPVar()); | 159 dictionary2->GetPPVar()); |
160 dictionary2->SetWithStringKey("abc", release_string.get()); | 160 dictionary2->SetWithStringKey("abc", release_string.get()); |
161 dictionary->SetWithStringKey("8", release_dictionary2.get()); | 161 dictionary->SetWithStringKey("8", release_dictionary2.get()); |
162 EXPECT_TRUE(WriteReadAndCompare(dictionary->GetPPVar())); | 162 EXPECT_TRUE(WriteReadAndCompare(dictionary->GetPPVar())); |
163 | 163 |
164 // Array with dictionary. | 164 // Array with dictionary. |
165 array->Set(index++, release_dictionary.get()); | 165 array->Set(static_cast<uint32_t>(index++), release_dictionary.get()); |
166 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 166 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
167 | 167 |
168 // Array with dictionary with array. | 168 // Array with dictionary with array. |
169 array2->Set(0, PP_MakeInt32(100)); | 169 array2->Set(0, PP_MakeInt32(100)); |
170 dictionary->SetWithStringKey("9", release_array2.get()); | 170 dictionary->SetWithStringKey("9", release_array2.get()); |
171 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); | 171 EXPECT_TRUE(WriteReadAndCompare(array->GetPPVar())); |
172 | 172 |
173 // Array <-> dictionary cycle. | 173 // Array <-> dictionary cycle. |
174 dictionary->SetWithStringKey("10", release_array.get()); | 174 dictionary->SetWithStringKey("10", release_array.get()); |
175 PP_Var result; | 175 PP_Var result; |
176 ASSERT_FALSE(WriteAndRead(release_dictionary.get(), &result)); | 176 ASSERT_FALSE(WriteAndRead(release_dictionary.get(), &result)); |
177 // Break the cycle. | 177 // Break the cycle. |
178 // TODO(raymes): We need some better machinery for releasing vars with | 178 // TODO(raymes): We need some better machinery for releasing vars with |
179 // cycles. Remove the code below once we have that. | 179 // cycles. Remove the code below once we have that. |
180 dictionary->DeleteWithStringKey("10"); | 180 dictionary->DeleteWithStringKey("10"); |
181 | 181 |
182 // Array with self references. | 182 // Array with self references. |
183 array->Set(index, release_array.get()); | 183 array->Set(static_cast<uint32_t>(index), release_array.get()); |
184 ASSERT_FALSE(WriteAndRead(release_array.get(), &result)); | 184 ASSERT_FALSE(WriteAndRead(release_array.get(), &result)); |
185 // Break the self reference. | 185 // Break the self reference. |
186 array->Set(index, PP_MakeUndefined()); | 186 array->Set(static_cast<uint32_t>(index), PP_MakeUndefined()); |
187 } | 187 } |
188 | 188 |
189 TEST_F(RawVarDataTest, ResourceTest) { | 189 TEST_F(RawVarDataTest, ResourceTest) { |
190 // TODO(mgiuca): This test passes trivially, since GetVarTracker() returns a | 190 // TODO(mgiuca): This test passes trivially, since GetVarTracker() returns a |
191 // TestVarTracker which returns a null PP_Var. | 191 // TestVarTracker which returns a null PP_Var. |
192 ScopedPPVar resource( | 192 ScopedPPVar resource( |
193 ScopedPPVar::PassRef(), | 193 ScopedPPVar::PassRef(), |
194 PpapiGlobals::Get()->GetVarTracker()->MakeResourcePPVar(34)); | 194 PpapiGlobals::Get()->GetVarTracker()->MakeResourcePPVar(34)); |
195 EXPECT_TRUE(WriteReadAndCompare(resource.get())); | 195 EXPECT_TRUE(WriteReadAndCompare(resource.get())); |
196 | 196 |
197 // TODO(mgiuca): Test a host resource with an IPC::Message. It is currently a | 197 // TODO(mgiuca): Test a host resource with an IPC::Message. It is currently a |
198 // checkfail to deserialize such a resource. | 198 // checkfail to deserialize such a resource. |
199 } | 199 } |
200 | 200 |
201 } // namespace proxy | 201 } // namespace proxy |
202 } // namespace ppapi | 202 } // namespace ppapi |
OLD | NEW |