1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "third_party/blink/renderer/platform/graphics/canvas_resource.h"
6 
7 #include "base/run_loop.h"
8 #include "components/viz/common/resources/single_release_callback.h"
9 #include "components/viz/common/resources/transferable_resource.h"
10 #include "components/viz/test/test_gpu_memory_buffer_manager.h"
11 #include "gpu/GLES2/gl2extchromium.h"
12 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h"
16 #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
17 #include "third_party/blink/renderer/platform/graphics/test/fake_gles2_interface.h"
18 #include "third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h"
19 #include "third_party/blink/renderer/platform/graphics/test/gpu_memory_buffer_test_platform.h"
20 #include "third_party/blink/renderer/platform/wtf/functional.h"
21 #include "third_party/skia/include/core/SkSurface.h"
22 
23 namespace blink {
24 
TEST(CanvasResourceTest,PrepareTransferableResource_SharedBitmap)25 TEST(CanvasResourceTest, PrepareTransferableResource_SharedBitmap) {
26   scoped_refptr<CanvasResource> canvas_resource =
27       CanvasResourceSharedBitmap::Create(IntSize(10, 10), CanvasColorParams(),
28                                          nullptr,  // CanvasResourceProvider
29                                          kLow_SkFilterQuality);
30   EXPECT_TRUE(!!canvas_resource);
31   viz::TransferableResource resource;
32   std::unique_ptr<viz::SingleReleaseCallback> release_callback;
33   bool success = canvas_resource->PrepareTransferableResource(
34       &resource, &release_callback, kUnverifiedSyncToken);
35 
36   EXPECT_TRUE(success);
37   EXPECT_TRUE(resource.is_software);
38 
39   release_callback->Run(gpu::SyncToken(), false);
40 }
41 
42 }  // namespace blink
43