| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "config.h" | 5 #include "config.h" |
| 6 #include "platform/graphics/RecordingImageBufferSurface.h" | 6 #include "platform/graphics/RecordingImageBufferSurface.h" |
| 7 | 7 |
| 8 #include "platform/graphics/GraphicsContext.h" | 8 #include "platform/graphics/GraphicsContext.h" |
| 9 #include "platform/graphics/ImageBuffer.h" | 9 #include "platform/graphics/ImageBuffer.h" |
| 10 #include "platform/graphics/ImageBufferClient.h" | 10 #include "platform/graphics/ImageBufferClient.h" |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 void enterRunLoop() | 251 void enterRunLoop() |
| 252 { | 252 { |
| 253 m_mockPlatform.enterRunLoop(); | 253 m_mockPlatform.enterRunLoop(); |
| 254 } | 254 } |
| 255 | 255 |
| 256 private: | 256 private: |
| 257 class CurrentThreadMock : public WebThread { | 257 class CurrentThreadMock : public WebThread { |
| 258 public: | 258 public: |
| 259 CurrentThreadMock() : m_taskObserver(0), m_task(0) { } | 259 CurrentThreadMock() : m_taskObserver(0), m_task(0) { } |
| 260 | 260 |
| 261 virtual ~CurrentThreadMock() | 261 ~CurrentThreadMock() override |
| 262 { | 262 { |
| 263 EXPECT_EQ((Task*)0, m_task); | 263 EXPECT_EQ((Task*)0, m_task); |
| 264 } | 264 } |
| 265 | 265 |
| 266 virtual void postTask(const WebTraceLocation&, Task* task) | 266 virtual void postTask(const WebTraceLocation&, Task* task) |
| 267 { | 267 { |
| 268 EXPECT_EQ((Task*)0, m_task); | 268 EXPECT_EQ((Task*)0, m_task); |
| 269 m_task = task; | 269 m_task = task; |
| 270 } | 270 } |
| 271 | 271 |
| 272 virtual void postDelayedTask(const WebTraceLocation&, Task*, long long d
elayMs) override { ASSERT_NOT_REACHED(); }; | 272 void postDelayedTask(const WebTraceLocation&, Task*, long long delayMs)
override { ASSERT_NOT_REACHED(); }; |
| 273 | 273 |
| 274 virtual bool isCurrentThread() const override { return true; } | 274 bool isCurrentThread() const override { return true; } |
| 275 virtual PlatformThreadId threadId() const override | 275 PlatformThreadId threadId() const override |
| 276 { | 276 { |
| 277 ASSERT_NOT_REACHED(); | 277 ASSERT_NOT_REACHED(); |
| 278 return 0; | 278 return 0; |
| 279 } | 279 } |
| 280 | 280 |
| 281 virtual void addTaskObserver(TaskObserver* taskObserver) override | 281 void addTaskObserver(TaskObserver* taskObserver) override |
| 282 { | 282 { |
| 283 EXPECT_EQ((TaskObserver*)0, m_taskObserver); | 283 EXPECT_EQ((TaskObserver*)0, m_taskObserver); |
| 284 m_taskObserver = taskObserver; | 284 m_taskObserver = taskObserver; |
| 285 } | 285 } |
| 286 | 286 |
| 287 virtual void removeTaskObserver(TaskObserver* taskObserver) override | 287 void removeTaskObserver(TaskObserver* taskObserver) override |
| 288 { | 288 { |
| 289 EXPECT_EQ(m_taskObserver, taskObserver); | 289 EXPECT_EQ(m_taskObserver, taskObserver); |
| 290 m_taskObserver = 0; | 290 m_taskObserver = 0; |
| 291 } | 291 } |
| 292 | 292 |
| 293 virtual WebScheduler* scheduler() const override | 293 WebScheduler* scheduler() const override |
| 294 { | 294 { |
| 295 ASSERT_NOT_REACHED(); | 295 ASSERT_NOT_REACHED(); |
| 296 return nullptr; | 296 return nullptr; |
| 297 } | 297 } |
| 298 | 298 |
| 299 void enterRunLoop() | 299 void enterRunLoop() |
| 300 { | 300 { |
| 301 if (m_taskObserver) | 301 if (m_taskObserver) |
| 302 m_taskObserver->willProcessTask(); | 302 m_taskObserver->willProcessTask(); |
| 303 if (m_task) { | 303 if (m_task) { |
| 304 m_task->run(); | 304 m_task->run(); |
| 305 delete m_task; | 305 delete m_task; |
| 306 m_task = 0; | 306 m_task = 0; |
| 307 } | 307 } |
| 308 if (m_taskObserver) | 308 if (m_taskObserver) |
| 309 m_taskObserver->didProcessTask(); | 309 m_taskObserver->didProcessTask(); |
| 310 } | 310 } |
| 311 | 311 |
| 312 private: | 312 private: |
| 313 TaskObserver* m_taskObserver; | 313 TaskObserver* m_taskObserver; |
| 314 Task* m_task; | 314 Task* m_task; |
| 315 }; | 315 }; |
| 316 | 316 |
| 317 class CurrentThreadPlatformMock : public Platform { | 317 class CurrentThreadPlatformMock : public Platform { |
| 318 public: | 318 public: |
| 319 CurrentThreadPlatformMock() { } | 319 CurrentThreadPlatformMock() { } |
| 320 virtual void cryptographicallyRandomValues(unsigned char* buffer, size_t
length) { ASSERT_NOT_REACHED(); } | 320 virtual void cryptographicallyRandomValues(unsigned char* buffer, size_t
length) { ASSERT_NOT_REACHED(); } |
| 321 virtual WebThread* currentThread() override { return &m_currentThread; } | 321 WebThread* currentThread() override { return &m_currentThread; } |
| 322 | 322 |
| 323 void enterRunLoop() { m_currentThread.enterRunLoop(); } | 323 void enterRunLoop() { m_currentThread.enterRunLoop(); } |
| 324 private: | 324 private: |
| 325 CurrentThreadMock m_currentThread; | 325 CurrentThreadMock m_currentThread; |
| 326 }; | 326 }; |
| 327 | 327 |
| 328 CurrentThreadPlatformMock m_mockPlatform; | 328 CurrentThreadPlatformMock m_mockPlatform; |
| 329 Platform* m_oldPlatform; | 329 Platform* m_oldPlatform; |
| 330 }; | 330 }; |
| 331 | 331 |
| 332 } // anonymous namespace | 332 } // anonymous namespace |
| 333 | 333 |
| 334 #define DEFINE_TEST_TASK_WRAPPER_CLASS(TEST_METHOD)
\ | 334 #define DEFINE_TEST_TASK_WRAPPER_CLASS(TEST_METHOD)
\ |
| 335 class TestWrapperTask_ ## TEST_METHOD : public WebThread::Task {
\ | 335 class TestWrapperTask_ ## TEST_METHOD : public WebThread::Task {
\ |
| 336 public:
\ | 336 public:
\ |
| 337 TestWrapperTask_ ## TEST_METHOD(RecordingImageBufferSurfaceTest* test) :
m_test(test) { } \ | 337 TestWrapperTask_ ## TEST_METHOD(RecordingImageBufferSurfaceTest* test) :
m_test(test) { } \ |
| 338 virtual void run() override { m_test->TEST_METHOD(); }
\ | 338 void run() override { m_test->TEST_METHOD(); }
\ |
| 339 private:
\ | 339 private:
\ |
| 340 RecordingImageBufferSurfaceTest* m_test;
\ | 340 RecordingImageBufferSurfaceTest* m_test;
\ |
| 341 }; | 341 }; |
| 342 | 342 |
| 343 #define CALL_TEST_TASK_WRAPPER(TEST_METHOD)
\ | 343 #define CALL_TEST_TASK_WRAPPER(TEST_METHOD)
\ |
| 344 {
\ | 344 {
\ |
| 345 AutoInstallCurrentThreadPlatformMock ctpm;
\ | 345 AutoInstallCurrentThreadPlatformMock ctpm;
\ |
| 346 Platform::current()->currentThread()->postTask(FROM_HERE, new TestWrappe
rTask_ ## TEST_METHOD(this)); \ | 346 Platform::current()->currentThread()->postTask(FROM_HERE, new TestWrappe
rTask_ ## TEST_METHOD(this)); \ |
| 347 ctpm.enterRunLoop(); \ | 347 ctpm.enterRunLoop(); \ |
| 348 } | 348 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 } | 389 } |
| 390 | 390 |
| 391 DEFINE_TEST_TASK_WRAPPER_CLASS(testClearRect) | 391 DEFINE_TEST_TASK_WRAPPER_CLASS(testClearRect) |
| 392 TEST_F(RecordingImageBufferSurfaceTest, testClearRect) | 392 TEST_F(RecordingImageBufferSurfaceTest, testClearRect) |
| 393 { | 393 { |
| 394 CALL_TEST_TASK_WRAPPER(testClearRect); | 394 CALL_TEST_TASK_WRAPPER(testClearRect); |
| 395 expectDisplayListEnabled(true); | 395 expectDisplayListEnabled(true); |
| 396 } | 396 } |
| 397 | 397 |
| 398 } // namespace blink | 398 } // namespace blink |
| OLD | NEW |