OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/html/canvas/CanvasAsyncBlobCreator.h" | 5 #include "core/html/canvas/CanvasAsyncBlobCreator.h" |
6 | 6 |
7 #include "core/html/ImageData.h" | 7 #include "core/html/ImageData.h" |
8 #include "core/testing/DummyPageHolder.h" | 8 #include "core/testing/DummyPageHolder.h" |
9 #include "platform/testing/UnitTestHelpers.h" | 9 #include "platform/testing/UnitTestHelpers.h" |
10 #include "platform/wtf/Functional.h" | 10 #include "platform/wtf/Functional.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 | 65 |
66 class MockCanvasAsyncBlobCreatorWithoutStartPng | 66 class MockCanvasAsyncBlobCreatorWithoutStartPng |
67 : public MockCanvasAsyncBlobCreator { | 67 : public MockCanvasAsyncBlobCreator { |
68 public: | 68 public: |
69 MockCanvasAsyncBlobCreatorWithoutStartPng(DOMUint8ClampedArray* data, | 69 MockCanvasAsyncBlobCreatorWithoutStartPng(DOMUint8ClampedArray* data, |
70 const IntSize& size, | 70 const IntSize& size, |
71 Document* document) | 71 Document* document) |
72 : MockCanvasAsyncBlobCreator(data, size, kMimeTypePng, document) {} | 72 : MockCanvasAsyncBlobCreator(data, size, kMimeTypePng, document) {} |
73 | 73 |
74 protected: | 74 protected: |
75 void ScheduleInitiatePngEncoding() override { | 75 void ScheduleInitiateEncoding(double) override { |
76 // Deliberately make scheduleInitiatePngEncoding do nothing so that idle | 76 // Deliberately make scheduleInitiateEncoding do nothing so that idle |
77 // task never starts | 77 // task never starts |
78 } | 78 } |
79 }; | 79 }; |
80 | 80 |
81 //============================================================================== | 81 //============================================================================== |
82 | 82 |
83 class MockCanvasAsyncBlobCreatorWithoutCompletePng | 83 class MockCanvasAsyncBlobCreatorWithoutCompletePng |
84 : public MockCanvasAsyncBlobCreator { | 84 : public MockCanvasAsyncBlobCreator { |
85 public: | 85 public: |
86 MockCanvasAsyncBlobCreatorWithoutCompletePng(DOMUint8ClampedArray* data, | 86 MockCanvasAsyncBlobCreatorWithoutCompletePng(DOMUint8ClampedArray* data, |
87 const IntSize& size, | 87 const IntSize& size, |
88 Document* document) | 88 Document* document) |
89 : MockCanvasAsyncBlobCreator(data, size, kMimeTypePng, document) {} | 89 : MockCanvasAsyncBlobCreator(data, size, kMimeTypePng, document) {} |
90 | 90 |
91 protected: | 91 protected: |
92 void ScheduleInitiatePngEncoding() override { | 92 void ScheduleInitiateEncoding(double quality) override { |
93 Platform::Current()->MainThread()->GetWebTaskRunner()->PostTask( | 93 Platform::Current()->MainThread()->GetWebTaskRunner()->PostTask( |
94 BLINK_FROM_HERE, | 94 BLINK_FROM_HERE, |
95 WTF::Bind( | 95 WTF::Bind( |
96 &MockCanvasAsyncBlobCreatorWithoutCompletePng::InitiatePngEncoding, | 96 &MockCanvasAsyncBlobCreatorWithoutCompletePng::InitiateEncoding, |
97 WrapPersistent(this), std::numeric_limits<double>::max())); | 97 WrapPersistent(this), quality, std::numeric_limits<double>::max())); |
98 } | 98 } |
99 | 99 |
100 void IdleEncodeRowsPng(double deadline_seconds) override { | 100 void IdleEncodeRows(double deadline_seconds) override { |
101 // Deliberately make idleEncodeRowsPng do nothing so that idle task never | 101 // Deliberately make idleEncodeRows do nothing so that idle task never |
102 // completes | 102 // completes |
103 } | 103 } |
104 }; | 104 }; |
105 | 105 |
106 //============================================================================== | 106 //============================================================================== |
107 //=================================JPEG========================================= | 107 //=================================JPEG========================================= |
108 //============================================================================== | 108 //============================================================================== |
109 | 109 |
110 class MockCanvasAsyncBlobCreatorWithoutStartJpeg | 110 class MockCanvasAsyncBlobCreatorWithoutStartJpeg |
111 : public MockCanvasAsyncBlobCreator { | 111 : public MockCanvasAsyncBlobCreator { |
112 public: | 112 public: |
113 MockCanvasAsyncBlobCreatorWithoutStartJpeg(DOMUint8ClampedArray* data, | 113 MockCanvasAsyncBlobCreatorWithoutStartJpeg(DOMUint8ClampedArray* data, |
114 const IntSize& size, | 114 const IntSize& size, |
115 Document* document) | 115 Document* document) |
116 : MockCanvasAsyncBlobCreator(data, size, kMimeTypeJpeg, document) {} | 116 : MockCanvasAsyncBlobCreator(data, size, kMimeTypeJpeg, document) {} |
117 | 117 |
118 protected: | 118 protected: |
119 void ScheduleInitiateJpegEncoding(const double&) override { | 119 void ScheduleInitiateEncoding(double) override { |
120 // Deliberately make scheduleInitiateJpegEncoding do nothing so that idle | 120 // Deliberately make scheduleInitiateEncoding do nothing so that idle |
121 // task never starts | 121 // task never starts |
122 } | 122 } |
123 }; | 123 }; |
124 | 124 |
125 //============================================================================== | 125 //============================================================================== |
126 | 126 |
127 class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg | 127 class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg |
128 : public MockCanvasAsyncBlobCreator { | 128 : public MockCanvasAsyncBlobCreator { |
129 public: | 129 public: |
130 MockCanvasAsyncBlobCreatorWithoutCompleteJpeg(DOMUint8ClampedArray* data, | 130 MockCanvasAsyncBlobCreatorWithoutCompleteJpeg(DOMUint8ClampedArray* data, |
131 const IntSize& size, | 131 const IntSize& size, |
132 Document* document) | 132 Document* document) |
133 : MockCanvasAsyncBlobCreator(data, size, kMimeTypeJpeg, document) {} | 133 : MockCanvasAsyncBlobCreator(data, size, kMimeTypeJpeg, document) {} |
134 | 134 |
135 protected: | 135 protected: |
136 void ScheduleInitiateJpegEncoding(const double& quality) override { | 136 void ScheduleInitiateEncoding(double quality) override { |
137 Platform::Current()->MainThread()->GetWebTaskRunner()->PostTask( | 137 Platform::Current()->MainThread()->GetWebTaskRunner()->PostTask( |
138 BLINK_FROM_HERE, | 138 BLINK_FROM_HERE, |
139 WTF::Bind(&MockCanvasAsyncBlobCreatorWithoutCompleteJpeg:: | 139 WTF::Bind( |
140 InitiateJpegEncoding, | 140 &MockCanvasAsyncBlobCreatorWithoutCompleteJpeg::InitiateEncoding, |
141 WrapPersistent(this), quality, | 141 WrapPersistent(this), quality, std::numeric_limits<double>::max())); |
142 std::numeric_limits<double>::max())); | |
143 } | 142 } |
144 | 143 |
145 void IdleEncodeRowsJpeg(double deadline_seconds) override { | 144 void IdleEncodeRows(double deadline_seconds) override { |
146 // Deliberately make idleEncodeRowsJpeg do nothing so that idle task never | 145 // Deliberately make idleEncodeRows do nothing so that idle task never |
147 // completes | 146 // completes |
148 } | 147 } |
149 }; | 148 }; |
150 | 149 |
151 //============================================================================== | 150 //============================================================================== |
152 | 151 |
153 class CanvasAsyncBlobCreatorTest : public ::testing::Test { | 152 class CanvasAsyncBlobCreatorTest : public ::testing::Test { |
154 public: | 153 public: |
155 // Png unit tests | 154 // Png unit tests |
156 void PrepareMockCanvasAsyncBlobCreatorWithoutStartPng(); | 155 void PrepareMockCanvasAsyncBlobCreatorWithoutStartPng(); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 JpegIdleTaskFailedWhenStartTimeoutEventHappens) { | 327 JpegIdleTaskFailedWhenStartTimeoutEventHappens) { |
329 this->PrepareMockCanvasAsyncBlobCreatorFailJpeg(); | 328 this->PrepareMockCanvasAsyncBlobCreatorFailJpeg(); |
330 | 329 |
331 this->AsyncBlobCreator()->ScheduleAsyncBlobCreation(1.0); | 330 this->AsyncBlobCreator()->ScheduleAsyncBlobCreation(1.0); |
332 testing::EnterRunLoop(); | 331 testing::EnterRunLoop(); |
333 | 332 |
334 EXPECT_EQ(IdleTaskStatus::kIdleTaskFailed, | 333 EXPECT_EQ(IdleTaskStatus::kIdleTaskFailed, |
335 this->AsyncBlobCreator()->GetIdleTaskStatus()); | 334 this->AsyncBlobCreator()->GetIdleTaskStatus()); |
336 } | 335 } |
337 } | 336 } |
OLD | NEW |