16c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org/*
26c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
36c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *
46c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  Use of this source code is governed by a BSD-style license
56c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  that can be found in the LICENSE file in the root of the source
66c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  tree. An additional intellectual property rights grant can be found
76c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  in the file PATENTS.  All contributing project authors may
86c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org *  be found in the AUTHORS file in the root of the source tree.
96c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org */
106c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
116c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org#include "webrtc/modules/desktop_capture/screen_capturer_helper.h"
126c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
136c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org#include "testing/gtest/include/gtest/gtest.h"
146c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org#include "webrtc/system_wrappers/interface/scoped_ptr.h"
156c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
166c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgnamespace webrtc {
176c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
186c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgclass ScreenCapturerHelperTest : public testing::Test {
196c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org protected:
206c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  ScreenCapturerHelper capturer_helper_;
216c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org};
226c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
236c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) {
246c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion region(DesktopRect::MakeXYWH(1, 2, 3, 4));
256c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(region);
266c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.ClearInvalidRegion();
276c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
286c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(region.is_empty());
296c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
306c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
316c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, InvalidateRegion) {
326c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion region;
336c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
346c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(region.is_empty());
356c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
366c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4));
376c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(region);
386c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
396c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)).Equals(region));
406c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
416c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
426c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)));
436c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
446c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(4, 2, 3, 4)));
456c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
466c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(1, 2, 6, 4)).Equals(region));
476c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
486c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
496c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, InvalidateScreen) {
506c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion region;
516c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateScreen(DesktopSize(12, 34));
526c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
536c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeWH(12, 34)).Equals(region));
546c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
556c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
566c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, SizeMostRecent) {
576c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(capturer_helper_.size_most_recent().is_empty());
586c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.set_size_most_recent(DesktopSize(12, 34));
596c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(
606c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopSize(12, 34).equals(capturer_helper_.size_most_recent()));
616c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
626c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
636c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, SetLogGridSize) {
646c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.set_size_most_recent(DesktopSize(10, 10));
656c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
666c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion region;
676c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
686c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion().Equals(region));
696c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
706c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
716c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
726c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
736c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)).Equals(region));
746c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
756c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.SetLogGridSize(-1);
766c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
776c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
786c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
796c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)).Equals(region));
806c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
816c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.SetLogGridSize(0);
826c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
836c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
846c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
856c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)).Equals(region));
866c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
876c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.SetLogGridSize(1);
886c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
896c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
906c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
916c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
926c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(6, 6, 2, 2)).Equals(region));
936c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
946c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.SetLogGridSize(2);
956c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
966c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
976c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
986c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(4, 4, 4, 4)).Equals(region));
996c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1006c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.SetLogGridSize(0);
1016c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.InvalidateRegion(
1026c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
1036c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  capturer_helper_.TakeInvalidRegion(&region);
1046c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(DesktopRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)).Equals(region));
1056c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
1066c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1076c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgvoid TestExpandRegionToGrid(const DesktopRegion& region, int log_grid_size,
1086c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                            const DesktopRegion& expanded_region_expected) {
1096c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion expanded_region1;
1106c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  ScreenCapturerHelper::ExpandToGrid(region, log_grid_size, &expanded_region1);
1116c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(expanded_region_expected.Equals(expanded_region1));
1126c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1136c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  DesktopRegion expanded_region2;
1146c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  ScreenCapturerHelper::ExpandToGrid(expanded_region1, log_grid_size,
1156c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                                     &expanded_region2);
1166c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  EXPECT_TRUE(expanded_region1.Equals(expanded_region2));
1176c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
1186c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1196c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgvoid TestExpandRectToGrid(int l, int t, int r, int b, int log_grid_size,
1206c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                          int lExpanded, int tExpanded,
1216c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                          int rExpanded, int bExpanded) {
1226c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  TestExpandRegionToGrid(DesktopRegion(DesktopRect::MakeLTRB(l, t, r, b)),
1236c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                         log_grid_size,
1246c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                         DesktopRegion(DesktopRect::MakeLTRB(
1256c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                             lExpanded, tExpanded, rExpanded, bExpanded)));
1266c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
1276c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1286c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.orgTEST_F(ScreenCapturerHelperTest, ExpandToGrid) {
1296c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  const int kLogGridSize = 4;
1306c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  const int kGridSize = 1 << kLogGridSize;
1316c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  for (int i = -2; i <= 2; i++) {
1326c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org    int x = i * kGridSize;
1336c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org    for (int j = -2; j <= 2; j++) {
1346c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      int y = j * kGridSize;
1356c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x + 0, y + 0, x + 1, y + 1, kLogGridSize,
1366c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + 0, y + 0, x + kGridSize, y + kGridSize);
1376c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x + 0, y + kGridSize - 1, x + 1, y + kGridSize,
1386c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           kLogGridSize,
1396c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + 0, y + 0, x + kGridSize, y + kGridSize);
1406c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x + kGridSize - 1, y + kGridSize - 1,
1416c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + kGridSize, y + kGridSize, kLogGridSize,
1426c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + 0, y + 0, x + kGridSize, y + kGridSize);
1436c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x + kGridSize - 1, y + 0,
1446c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + kGridSize, y + 1, kLogGridSize,
1456c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x + 0, y + 0, x + kGridSize, y + kGridSize);
1466c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x - 1, y + 0, x + 1, y + 1, kLogGridSize,
1476c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x - kGridSize, y + 0, x + kGridSize, y + kGridSize);
1486c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x - 1, y - 1, x + 1, y + 0, kLogGridSize,
1496c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x - kGridSize, y - kGridSize, x + kGridSize, y);
1506c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x + 0, y - 1, x + 1, y + 1, kLogGridSize,
1516c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x, y - kGridSize, x + kGridSize, y + kGridSize);
1526c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      TestExpandRectToGrid(x - 1, y - 1, x + 0, y + 1, kLogGridSize,
1536c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org                           x - kGridSize, y - kGridSize, x, y + kGridSize);
1546c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1556c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      // Construct a region consisting of 3 pixels and verify that it's expanded
1566c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      // properly to 3 squares that are kGridSize by kGridSize.
1576c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      for (int q = 0; q < 4; ++q) {
1586c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        DesktopRegion region;
1596c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        DesktopRegion expanded_region_expected;
1606c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1616c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        if (q != 0) {
1626c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          region.AddRect(DesktopRect::MakeXYWH(x - 1, y - 1, 1, 1));
1636c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          expanded_region_expected.AddRect(DesktopRect::MakeXYWH(
1646c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org              x - kGridSize, y - kGridSize, kGridSize, kGridSize));
1656c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        }
1666c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        if (q != 1) {
1676c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          region.AddRect(DesktopRect::MakeXYWH(x, y - 1, 1, 1));
1686c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          expanded_region_expected.AddRect(DesktopRect::MakeXYWH(
1696c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org              x, y - kGridSize, kGridSize, kGridSize));
1706c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        }
1716c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        if (q != 2) {
1726c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          region.AddRect(DesktopRect::MakeXYWH(x - 1, y, 1, 1));
1736c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          expanded_region_expected.AddRect(DesktopRect::MakeXYWH(
1746c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org              x - kGridSize, y, kGridSize, kGridSize));
1756c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        }
1766c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        if (q != 3) {
1776c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          region.AddRect(DesktopRect::MakeXYWH(x, y, 1, 1));
1786c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org          expanded_region_expected.AddRect(DesktopRect::MakeXYWH(
1796c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org              x, y, kGridSize, kGridSize));
1806c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        }
1816c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1826c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org        TestExpandRegionToGrid(region, kLogGridSize, expanded_region_expected);
1836c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org      }
1846c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org    }
1856c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org  }
1866c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}
1876c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org
1886c82a7ea6ea92e8c68b37112186fd928b11ddc49sergeyu@chromium.org}  // namespace webrtc
189