OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Koji Ishii <kojiishi@gmail.com> | 2 * Copyright (C) 2012 Koji Ishii <kojiishi@gmail.com> |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
12 * | 12 * |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND | 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND |
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR | 16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR |
17 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 17 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | 19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | 20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
23 */ | 23 */ |
24 | 24 |
25 #include "platform/SharedBuffer.h" | 25 #include "platform/SharedBuffer.h" |
26 #include "platform/fonts/opentype/OpenTypeTypes.h" | 26 #include "platform/fonts/opentype/OpenTypeTypes.h" |
| 27 #include "platform/wtf/RefPtr.h" |
27 #include "testing/gtest/include/gtest/gtest.h" | 28 #include "testing/gtest/include/gtest/gtest.h" |
28 #include "wtf/RefPtr.h" | |
29 | 29 |
30 namespace blink { | 30 namespace blink { |
31 | 31 |
32 struct TestTable : OpenType::TableBase { | 32 struct TestTable : OpenType::TableBase { |
33 OpenType::Fixed version; | 33 OpenType::Fixed version; |
34 OpenType::Int16 ascender; | 34 OpenType::Int16 ascender; |
35 | 35 |
36 template <typename T> | 36 template <typename T> |
37 const T* validateOffset(const SharedBuffer& buffer, uint16_t offset) const { | 37 const T* validateOffset(const SharedBuffer& buffer, uint16_t offset) const { |
38 return TableBase::validateOffset<T>(buffer, offset); | 38 return TableBase::validateOffset<T>(buffer, offset); |
(...skipping 28 matching lines...) Expand all Loading... |
67 EXPECT_FALSE(table->validateOffset<uint8_t>(*buffer, sizeof(TestTable))); | 67 EXPECT_FALSE(table->validateOffset<uint8_t>(*buffer, sizeof(TestTable))); |
68 EXPECT_FALSE(table->validateOffset<uint8_t>(*buffer, sizeof(TestTable) + 1)); | 68 EXPECT_FALSE(table->validateOffset<uint8_t>(*buffer, sizeof(TestTable) + 1)); |
69 | 69 |
70 // For uint16_t, the last byte is invalid | 70 // For uint16_t, the last byte is invalid |
71 for (uint16_t offset = 0; offset < sizeof(TestTable) - 1; offset++) | 71 for (uint16_t offset = 0; offset < sizeof(TestTable) - 1; offset++) |
72 EXPECT_TRUE(table->validateOffset<uint16_t>(*buffer, offset)); | 72 EXPECT_TRUE(table->validateOffset<uint16_t>(*buffer, offset)); |
73 EXPECT_FALSE(table->validateOffset<uint16_t>(*buffer, sizeof(TestTable) - 1)); | 73 EXPECT_FALSE(table->validateOffset<uint16_t>(*buffer, sizeof(TestTable) - 1)); |
74 } | 74 } |
75 | 75 |
76 } // namespace blink | 76 } // namespace blink |
OLD | NEW |