Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Side by Side Diff: remoting/ios/bridge/frame_consumer_bridge_unittest.cc

Issue 475333004: Remove old Chromoting iOS client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/ios/bridge/frame_consumer_bridge.cc ('k') | remoting/ios/bridge/host_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "remoting/ios/bridge/frame_consumer_bridge.h"
6
7 #include <queue>
8 #include <gtest/gtest.h>
9
10 #include "base/bind.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
13 #include "third_party/webrtc/modules/desktop_capture/desktop_region.h"
14
15 namespace {
16 const webrtc::DesktopSize kFrameSize(100, 100);
17 const webrtc::DesktopVector kDpi(100, 100);
18
19 const webrtc::DesktopRect FrameRect() {
20 return webrtc::DesktopRect::MakeSize(kFrameSize);
21 }
22
23 webrtc::DesktopRegion FrameRegion() {
24 return webrtc::DesktopRegion(FrameRect());
25 }
26
27 void FrameDelivery(const webrtc::DesktopSize& view_size,
28 webrtc::DesktopFrame* buffer,
29 const webrtc::DesktopRegion& region) {
30 ASSERT_TRUE(view_size.equals(kFrameSize));
31 ASSERT_TRUE(region.Equals(FrameRegion()));
32 };
33
34 } // namespace
35
36 namespace remoting {
37
38 class FrameProducerTester : public FrameProducer {
39 public:
40 virtual ~FrameProducerTester() {};
41
42 virtual void DrawBuffer(webrtc::DesktopFrame* buffer) OVERRIDE {
43 frames.push(buffer);
44 };
45
46 virtual void InvalidateRegion(const webrtc::DesktopRegion& region) OVERRIDE {
47 NOTIMPLEMENTED();
48 };
49
50 virtual void RequestReturnBuffers(const base::Closure& done) OVERRIDE {
51 // Don't have to actually return the buffers. This function is really
52 // saying don't use the references anymore, they are now invalid.
53 while (!frames.empty()) {
54 frames.pop();
55 }
56 done.Run();
57 };
58
59 virtual void SetOutputSizeAndClip(const webrtc::DesktopSize& view_size,
60 const webrtc::DesktopRect& clip_area)
61 OVERRIDE {
62 viewSize = view_size;
63 clipArea = clip_area;
64 };
65
66 std::queue<webrtc::DesktopFrame*> frames;
67 webrtc::DesktopSize viewSize;
68 webrtc::DesktopRect clipArea;
69 };
70
71 class FrameConsumerBridgeTest : public ::testing::Test {
72 protected:
73 virtual void SetUp() OVERRIDE {
74 frameProducer_.reset(new FrameProducerTester());
75 frameConsumer_.reset(new FrameConsumerBridge(base::Bind(&FrameDelivery)));
76 frameConsumer_->Initialize(frameProducer_.get());
77 }
78 virtual void TearDown() OVERRIDE {}
79
80 scoped_ptr<FrameProducerTester> frameProducer_;
81 scoped_ptr<FrameConsumerBridge> frameConsumer_;
82 };
83
84 TEST(FrameConsumerBridgeTest_NotInitialized, CreateAndRelease) {
85 scoped_ptr<FrameConsumerBridge> frameConsumer_(
86 new FrameConsumerBridge(base::Bind(&FrameDelivery)));
87 ASSERT_TRUE(frameConsumer_.get() != NULL);
88 frameConsumer_.reset();
89 ASSERT_TRUE(frameConsumer_.get() == NULL);
90 }
91
92 TEST_F(FrameConsumerBridgeTest, ApplyBuffer) {
93 webrtc::DesktopFrame* frame = NULL;
94 ASSERT_EQ(0, frameProducer_->frames.size());
95 frameConsumer_->SetSourceSize(kFrameSize, kDpi);
96 ASSERT_EQ(1, frameProducer_->frames.size());
97
98 // Return the frame, and ensure we get it back
99 frame = frameProducer_->frames.front();
100 frameProducer_->frames.pop();
101 ASSERT_EQ(0, frameProducer_->frames.size());
102 frameConsumer_->ApplyBuffer(
103 kFrameSize, FrameRect(), frame, FrameRegion(), FrameRegion());
104 ASSERT_EQ(1, frameProducer_->frames.size());
105 ASSERT_TRUE(frame == frameProducer_->frames.front());
106 ASSERT_TRUE(frame->data() == frameProducer_->frames.front()->data());
107
108 // Change the SourceSize, we should get a new frame, but when the old frame is
109 // submitted we will not get it back.
110 frameConsumer_->SetSourceSize(webrtc::DesktopSize(1, 1), kDpi);
111 ASSERT_EQ(2, frameProducer_->frames.size());
112 frame = frameProducer_->frames.front();
113 frameProducer_->frames.pop();
114 ASSERT_EQ(1, frameProducer_->frames.size());
115 frameConsumer_->ApplyBuffer(
116 kFrameSize, FrameRect(), frame, FrameRegion(), FrameRegion());
117 ASSERT_EQ(1, frameProducer_->frames.size());
118 }
119
120 TEST_F(FrameConsumerBridgeTest, SetSourceSize) {
121 frameConsumer_->SetSourceSize(webrtc::DesktopSize(0, 0),
122 webrtc::DesktopVector(0, 0));
123 ASSERT_TRUE(frameProducer_->viewSize.equals(webrtc::DesktopSize(0, 0)));
124 ASSERT_TRUE(frameProducer_->clipArea.equals(
125 webrtc::DesktopRect::MakeLTRB(0, 0, 0, 0)));
126 ASSERT_EQ(1, frameProducer_->frames.size());
127 ASSERT_TRUE(
128 frameProducer_->frames.front()->size().equals(webrtc::DesktopSize(0, 0)));
129
130 frameConsumer_->SetSourceSize(kFrameSize, kDpi);
131 ASSERT_TRUE(frameProducer_->viewSize.equals(kFrameSize));
132 ASSERT_TRUE(frameProducer_->clipArea.equals(FrameRect()));
133 ASSERT_EQ(2, frameProducer_->frames.size());
134 frameProducer_->frames.pop();
135 ASSERT_TRUE(frameProducer_->frames.front()->size().equals(kFrameSize));
136 }
137
138 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/ios/bridge/frame_consumer_bridge.cc ('k') | remoting/ios/bridge/host_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698