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

Side by Side Diff: remoting/host/session_manager_unittest.cc

Issue 3013015: Initial pass at integrating Differ into the chromoting host code.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 | Annotate | Revision Log
« no previous file with comments | « remoting/host/session_manager.cc ('k') | remoting/host/simple_host_process.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/task.h" 6 #include "base/task.h"
7 #include "remoting/base/mock_objects.h" 7 #include "remoting/base/mock_objects.h"
8 #include "remoting/host/mock_objects.h" 8 #include "remoting/host/mock_objects.h"
9 #include "remoting/host/session_manager.h" 9 #include "remoting/host/session_manager.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 MessageLoop message_loop_; 46 MessageLoop message_loop_;
47 private: 47 private:
48 DISALLOW_COPY_AND_ASSIGN(SessionManagerTest); 48 DISALLOW_COPY_AND_ASSIGN(SessionManagerTest);
49 }; 49 };
50 50
51 TEST_F(SessionManagerTest, Init) { 51 TEST_F(SessionManagerTest, Init) {
52 Init(); 52 Init();
53 } 53 }
54 54
55 ACTION_P2(RunCallback, rects, data) { 55 ACTION_P2(RunCallback, rects, data) {
56 RectVector& dirty_rects = data->mutable_dirty_rects(); 56 InvalidRects& dirty_rects = data->mutable_dirty_rects();
57 dirty_rects.insert(dirty_rects.end(), rects.begin(), rects.end()); 57 InvalidRects temp_rects;
58 std::set_union(dirty_rects.begin(), dirty_rects.end(),
59 rects.begin(), rects.end(),
60 std::inserter(temp_rects, temp_rects.begin()));
61 dirty_rects.swap(temp_rects);
58 arg0->Run(data); 62 arg0->Run(data);
59 delete arg0; 63 delete arg0;
60 } 64 }
61 65
62 ACTION_P(FinishEncode, msg) { 66 ACTION_P(FinishEncode, msg) {
63 Encoder::EncodingState state = (Encoder::EncodingStarting | 67 Encoder::EncodingState state = (Encoder::EncodingStarting |
64 Encoder::EncodingInProgress | 68 Encoder::EncodingInProgress |
65 Encoder::EncodingEnded); 69 Encoder::EncodingEnded);
66 arg2->Run(msg, state); 70 arg2->Run(msg, state);
67 } 71 }
68 72
69 ACTION_P(AssignCaptureData, data) { 73 ACTION_P(AssignCaptureData, data) {
70 arg0[0] = data[0]; 74 arg0[0] = data[0];
71 arg0[1] = data[1]; 75 arg0[1] = data[1];
72 arg0[2] = data[2]; 76 arg0[2] = data[2];
73 } 77 }
74 78
75 ACTION_P(AssignDirtyRect, rects) { 79 ACTION_P(AssignDirtyRect, rects) {
76 *arg0 = *rects; 80 *arg0 = *rects;
77 } 81 }
78 82
79 TEST_F(SessionManagerTest, OneRecordCycle) { 83 TEST_F(SessionManagerTest, OneRecordCycle) {
80 Init(); 84 Init();
81 85
82 RectVector update_rects; 86 InvalidRects update_rects;
83 update_rects.push_back(gfx::Rect(0, 0, 10, 10)); 87 update_rects.insert(gfx::Rect(0, 0, 10, 10));
84 DataPlanes planes; 88 DataPlanes planes;
85 for (int i = 0; i < DataPlanes::kPlaneCount; ++i) { 89 for (int i = 0; i < DataPlanes::kPlaneCount; ++i) {
86 planes.data[i] = reinterpret_cast<uint8*>(i); 90 planes.data[i] = reinterpret_cast<uint8*>(i);
87 planes.strides[i] = kWidth * 4; 91 planes.strides[i] = kWidth * 4;
88 } 92 }
89 scoped_refptr<CaptureData> data(new CaptureData(planes, kWidth, 93 scoped_refptr<CaptureData> data(new CaptureData(planes, kWidth,
90 kHeight, kFormat)); 94 kHeight, kFormat));
91 // Set the recording rate to very low to avoid capture twice. 95 // Set the recording rate to very low to avoid capture twice.
92 record_->SetMaxRate(0.01); 96 record_->SetMaxRate(0.01);
93 97
94 // Add the mock client connection to the session. 98 // Add the mock client connection to the session.
95 EXPECT_CALL(*capturer_, width()).WillRepeatedly(Return(kWidth)); 99 EXPECT_CALL(*capturer_, width()).WillRepeatedly(Return(kWidth));
96 EXPECT_CALL(*capturer_, height()).WillRepeatedly(Return(kHeight)); 100 EXPECT_CALL(*capturer_, height()).WillRepeatedly(Return(kHeight));
97 EXPECT_CALL(*client_, SendInitClientMessage(kWidth, kHeight)); 101 EXPECT_CALL(*client_, SendInitClientMessage(kWidth, kHeight));
98 record_->AddClient(client_); 102 record_->AddClient(client_);
99 103
100 // First the capturer is called. 104 // First the capturer is called.
101 EXPECT_CALL(*capturer_, InvalidateFullScreen());
102 EXPECT_CALL(*capturer_, CaptureInvalidRects(NotNull())) 105 EXPECT_CALL(*capturer_, CaptureInvalidRects(NotNull()))
103 .WillOnce(RunCallback(update_rects, data)); 106 .WillOnce(RunCallback(update_rects, data));
104 107
105 // Expect the encoder be called. 108 // Expect the encoder be called.
106 HostMessage* msg = new HostMessage(); 109 HostMessage* msg = new HostMessage();
107 EXPECT_CALL(*encoder_, Encode(data, false, NotNull())) 110 EXPECT_CALL(*encoder_, Encode(data, false, NotNull()))
108 .WillOnce(FinishEncode(msg)); 111 .WillOnce(FinishEncode(msg));
109 112
110 // Expect the client be notified. 113 // Expect the client be notified.
111 EXPECT_CALL(*client_, SendBeginUpdateStreamMessage()); 114 EXPECT_CALL(*client_, SendBeginUpdateStreamMessage());
112 EXPECT_CALL(*client_, SendUpdateStreamPacketMessage(_)); 115 EXPECT_CALL(*client_, SendUpdateStreamPacketMessage(_));
113 EXPECT_CALL(*client_, SendEndUpdateStreamMessage()); 116 EXPECT_CALL(*client_, SendEndUpdateStreamMessage());
114 EXPECT_CALL(*client_, GetPendingUpdateStreamMessages()) 117 EXPECT_CALL(*client_, GetPendingUpdateStreamMessages())
115 .Times(AtLeast(0)) 118 .Times(AtLeast(0))
116 .WillRepeatedly(Return(0)); 119 .WillRepeatedly(Return(0));
117 120
118
119 // Start the recording. 121 // Start the recording.
120 record_->Start(); 122 record_->Start();
121 123
122 // Make sure all tasks are completed. 124 // Make sure all tasks are completed.
123 message_loop_.RunAllPending(); 125 message_loop_.RunAllPending();
124 } 126 }
125 127
126 // TODO(hclam): Add test for double buffering. 128 // TODO(hclam): Add test for double buffering.
127 // TODO(hclam): Add test for multiple captures. 129 // TODO(hclam): Add test for multiple captures.
128 // TODO(hclam): Add test for interruption. 130 // TODO(hclam): Add test for interruption.
129 131
130 } // namespace remoting 132 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/session_manager.cc ('k') | remoting/host/simple_host_process.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698