| Index: remoting/host/capturer_mac_unittest.cc
|
| diff --git a/remoting/host/capturer_mac_unittest.cc b/remoting/host/capturer_mac_unittest.cc
|
| deleted file mode 100644
|
| index 151fd6469f0167d176f7989f836dee4b829e835e..0000000000000000000000000000000000000000
|
| --- a/remoting/host/capturer_mac_unittest.cc
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "remoting/host/capturer.h"
|
| -
|
| -#include <ApplicationServices/ApplicationServices.h>
|
| -
|
| -#include <ostream>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/callback.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "remoting/base/capture_data.h"
|
| -#include "remoting/proto/control.pb.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace remoting {
|
| -
|
| -// Verify that the OS is at least Snow Leopard (10.6).
|
| -// Chromoting doesn't support 10.5 or earlier.
|
| -bool CheckSnowLeopard() {
|
| - long minorVersion, majorVersion;
|
| - Gestalt(gestaltSystemVersionMajor, &majorVersion);
|
| - Gestalt(gestaltSystemVersionMinor, &minorVersion);
|
| - return majorVersion == 10 && minorVersion > 5;
|
| -}
|
| -
|
| -class CapturerMacTest : public testing::Test {
|
| - protected:
|
| - virtual void SetUp() {
|
| - capturer_.reset(Capturer::Create());
|
| - }
|
| -
|
| - void AddDirtyRect() {
|
| - SkIRect rect = SkIRect::MakeXYWH(0, 0, 10, 10);
|
| - region_.op(rect, SkRegion::kUnion_Op);
|
| - }
|
| -
|
| - scoped_ptr<Capturer> capturer_;
|
| - SkRegion region_;
|
| -};
|
| -
|
| -// CapturerCallback1 verifies that the whole screen is initially dirty.
|
| -class CapturerCallback1 {
|
| - public:
|
| - CapturerCallback1() { }
|
| - void CaptureDoneCallback(scoped_refptr<CaptureData> capture_data);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(CapturerCallback1);
|
| -};
|
| -
|
| -void CapturerCallback1::CaptureDoneCallback(
|
| - scoped_refptr<CaptureData> capture_data) {
|
| - CGDirectDisplayID mainDevice = CGMainDisplayID();
|
| - int width = CGDisplayPixelsWide(mainDevice);
|
| - int height = CGDisplayPixelsHigh(mainDevice);
|
| - SkRegion initial_region(SkIRect::MakeXYWH(0, 0, width, height));
|
| - EXPECT_EQ(initial_region, capture_data->dirty_region());
|
| -}
|
| -
|
| -// CapturerCallback2 verifies that a rectangle explicitly marked as dirty is
|
| -// propagated correctly.
|
| -class CapturerCallback2 {
|
| - public:
|
| - explicit CapturerCallback2(const SkRegion& expected_dirty_region)
|
| - : expected_dirty_region_(expected_dirty_region) { }
|
| - void CaptureDoneCallback(scoped_refptr<CaptureData> capture_data);
|
| -
|
| - protected:
|
| - SkRegion expected_dirty_region_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(CapturerCallback2);
|
| -};
|
| -
|
| -void CapturerCallback2::CaptureDoneCallback(
|
| - scoped_refptr<CaptureData> capture_data) {
|
| - CGDirectDisplayID mainDevice = CGMainDisplayID();
|
| - int width = CGDisplayPixelsWide(mainDevice);
|
| - int height = CGDisplayPixelsHigh(mainDevice);
|
| -
|
| - EXPECT_EQ(expected_dirty_region_, capture_data->dirty_region());
|
| - EXPECT_EQ(width, capture_data->size().width());
|
| - EXPECT_EQ(height, capture_data->size().height());
|
| - const DataPlanes &planes = capture_data->data_planes();
|
| - EXPECT_TRUE(planes.data[0] != NULL);
|
| - EXPECT_TRUE(planes.data[1] == NULL);
|
| - EXPECT_TRUE(planes.data[2] == NULL);
|
| - // Depending on the capture method, the screen may be flipped or not, so
|
| - // the stride may be positive or negative.
|
| - EXPECT_EQ(static_cast<int>(sizeof(uint32_t) * width),
|
| - abs(planes.strides[0]));
|
| - EXPECT_EQ(0, planes.strides[1]);
|
| - EXPECT_EQ(0, planes.strides[2]);
|
| -}
|
| -
|
| -class CursorCallback {
|
| - public:
|
| - CursorCallback() { }
|
| - void CursorShapeChangedCallback(
|
| - scoped_ptr<protocol::CursorShapeInfo> cursor_data);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(CursorCallback);
|
| -};
|
| -
|
| -void CursorCallback::CursorShapeChangedCallback(
|
| - scoped_ptr<protocol::CursorShapeInfo> cursor_data) {
|
| -}
|
| -
|
| -TEST_F(CapturerMacTest, Capture) {
|
| - if (!CheckSnowLeopard()) {
|
| - return;
|
| - }
|
| -
|
| - SCOPED_TRACE("");
|
| - CursorCallback cursor_callback;
|
| - capturer_->Start(base::Bind(&CursorCallback::CursorShapeChangedCallback,
|
| - base::Unretained(&cursor_callback)));
|
| - // Check that we get an initial full-screen updated.
|
| - CapturerCallback1 callback1;
|
| - capturer_->CaptureInvalidRegion(base::Bind(
|
| - &CapturerCallback1::CaptureDoneCallback, base::Unretained(&callback1)));
|
| - // Check that subsequent dirty rects are propagated correctly.
|
| - AddDirtyRect();
|
| - CapturerCallback2 callback2(region_);
|
| - capturer_->InvalidateRegion(region_);
|
| - capturer_->CaptureInvalidRegion(base::Bind(
|
| - &CapturerCallback2::CaptureDoneCallback, base::Unretained(&callback2)));
|
| - capturer_->Stop();
|
| -}
|
| -
|
| -} // namespace remoting
|
| -
|
| -namespace gfx {
|
| -
|
| -std::ostream& operator<<(std::ostream& out, const SkRegion& region) {
|
| - out << "SkRegion(";
|
| - for (SkRegion::Iterator i(region); !i.done(); i.next()) {
|
| - const SkIRect& r = i.rect();
|
| - out << "(" << r.fLeft << "," << r.fTop << ","
|
| - << r.fRight << "," << r.fBottom << ")";
|
| - }
|
| - out << ")";
|
| - return out;
|
| -}
|
| -
|
| -} // namespace gfx
|
|
|