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

Side by Side Diff: content/browser/media/capture/web_contents_video_capture_device_unittest.cc

Issue 1182303005: Fixed the Touchscreen.TouchEventsEnabled histogram to record the correct values on X11 and Ozone ba… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added logging.h include to device_data_manager_test_api_stub.cc. Created 5 years, 5 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 | « chrome/chrome_tests_unit.gypi ('k') | tools/metrics/histograms/histograms.xml » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/media/capture/web_contents_video_capture_device.h" 5 #include "content/browser/media/capture/web_contents_video_capture_device.h"
6 6
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/debug/debugger.h" 8 #include "base/debug/debugger.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 20 matching lines...) Expand all
31 #include "media/base/video_util.h" 31 #include "media/base/video_util.h"
32 #include "media/base/yuv_convert.h" 32 #include "media/base/yuv_convert.h"
33 #include "skia/ext/platform_canvas.h" 33 #include "skia/ext/platform_canvas.h"
34 #include "testing/gmock/include/gmock/gmock.h" 34 #include "testing/gmock/include/gmock/gmock.h"
35 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
36 #include "third_party/skia/include/core/SkColor.h" 36 #include "third_party/skia/include/core/SkColor.h"
37 #include "ui/base/layout.h" 37 #include "ui/base/layout.h"
38 #include "ui/gfx/display.h" 38 #include "ui/gfx/display.h"
39 #include "ui/gfx/geometry/dip_util.h" 39 #include "ui/gfx/geometry/dip_util.h"
40 #include "ui/gfx/screen.h" 40 #include "ui/gfx/screen.h"
41 #include "ui/gfx/test/test_screen.h"
41 42
42 namespace content { 43 namespace content {
43 namespace { 44 namespace {
44 45
45 const int kTestWidth = 320; 46 const int kTestWidth = 320;
46 const int kTestHeight = 240; 47 const int kTestHeight = 240;
47 const int kTestFramesPerSecond = 20; 48 const int kTestFramesPerSecond = 20;
48 const float kTestDeviceScaleFactor = 2.0f; 49 const float kTestDeviceScaleFactor = 2.0f;
49 const SkColor kNothingYet = 0xdeadbeef; 50 const SkColor kNothingYet = 0xdeadbeef;
50 const SkColor kNotInterested = ~kNothingYet; 51 const SkColor kNotInterested = ~kNothingYet;
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 private: 534 private:
534 base::Lock lock_; 535 base::Lock lock_;
535 bool error_encountered_; 536 bool error_encountered_;
536 SkColor wait_color_yuv_; 537 SkColor wait_color_yuv_;
537 gfx::Size wait_size_; 538 gfx::Size wait_size_;
538 scoped_ptr<StubClient> client_; 539 scoped_ptr<StubClient> client_;
539 540
540 DISALLOW_COPY_AND_ASSIGN(StubClientObserver); 541 DISALLOW_COPY_AND_ASSIGN(StubClientObserver);
541 }; 542 };
542 543
543 // A dummy implementation of gfx::Screen, since WebContentsVideoCaptureDevice
544 // needs access to a gfx::Display's device scale factor.
545 class FakeScreen : public gfx::Screen {
546 public:
547 FakeScreen() : the_one_display_(0x1337, gfx::Rect(0, 0, 2560, 1440)) {
548 the_one_display_.set_device_scale_factor(kTestDeviceScaleFactor);
549 }
550 ~FakeScreen() override {}
551
552 // gfx::Screen implementation (only what's needed for testing).
553 gfx::Point GetCursorScreenPoint() override { return gfx::Point(); }
554 gfx::NativeWindow GetWindowUnderCursor() override { return NULL; }
555 gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point) override {
556 return NULL;
557 }
558 int GetNumDisplays() const override { return 1; }
559 std::vector<gfx::Display> GetAllDisplays() const override {
560 return std::vector<gfx::Display>(1, the_one_display_);
561 }
562 gfx::Display GetDisplayNearestWindow(gfx::NativeView view) const override {
563 return the_one_display_;
564 }
565 gfx::Display GetDisplayNearestPoint(const gfx::Point& point) const override {
566 return the_one_display_;
567 }
568 gfx::Display GetDisplayMatching(const gfx::Rect& match_rect) const override {
569 return the_one_display_;
570 }
571 gfx::Display GetPrimaryDisplay() const override { return the_one_display_; }
572 void AddObserver(gfx::DisplayObserver* observer) override {}
573 void RemoveObserver(gfx::DisplayObserver* observer) override {}
574
575 private:
576 gfx::Display the_one_display_;
577
578 DISALLOW_COPY_AND_ASSIGN(FakeScreen);
579 };
580
581 // Test harness that sets up a minimal environment with necessary stubs. 544 // Test harness that sets up a minimal environment with necessary stubs.
582 class WebContentsVideoCaptureDeviceTest : public testing::Test { 545 class WebContentsVideoCaptureDeviceTest : public testing::Test {
583 public: 546 public:
584 // This is public because C++ method pointer scoping rules are silly and make 547 // This is public because C++ method pointer scoping rules are silly and make
585 // this hard to use with Bind(). 548 // this hard to use with Bind().
586 void ResetWebContents() { 549 void ResetWebContents() {
587 web_contents_.reset(); 550 web_contents_.reset();
588 } 551 }
589 552
590 protected: 553 protected:
591 void SetUp() override { 554 void SetUp() override {
592 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, &fake_screen_); 555 test_screen_.display()->set_id(0x1337);
593 ASSERT_EQ(&fake_screen_, gfx::Screen::GetNativeScreen()); 556 test_screen_.display()->set_bounds(gfx::Rect(0, 0, 2560, 1440));
557 test_screen_.display()->set_device_scale_factor(kTestDeviceScaleFactor);
558
559 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, &test_screen_);
560 ASSERT_EQ(&test_screen_, gfx::Screen::GetNativeScreen());
594 561
595 // TODO(nick): Sadness and woe! Much "mock-the-world" boilerplate could be 562 // TODO(nick): Sadness and woe! Much "mock-the-world" boilerplate could be
596 // eliminated here, if only we could use RenderViewHostTestHarness. The 563 // eliminated here, if only we could use RenderViewHostTestHarness. The
597 // catch is that we need our TestRenderViewHost to support a 564 // catch is that we need our TestRenderViewHost to support a
598 // CopyFromBackingStore operation that we control. To accomplish that, 565 // CopyFromBackingStore operation that we control. To accomplish that,
599 // either RenderViewHostTestHarness would have to support installing a 566 // either RenderViewHostTestHarness would have to support installing a
600 // custom RenderViewHostFactory, or else we implant some kind of delegated 567 // custom RenderViewHostFactory, or else we implant some kind of delegated
601 // CopyFromBackingStore functionality into TestRenderViewHost itself. 568 // CopyFromBackingStore functionality into TestRenderViewHost itself.
602 569
603 render_process_host_factory_.reset(new MockRenderProcessHostFactory()); 570 render_process_host_factory_.reset(new MockRenderProcessHostFactory());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 615
649 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, NULL); 616 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, NULL);
650 } 617 }
651 618
652 // Accessors. 619 // Accessors.
653 CaptureTestSourceController* source() { return &controller_; } 620 CaptureTestSourceController* source() { return &controller_; }
654 WebContents* web_contents() const { return web_contents_.get(); } 621 WebContents* web_contents() const { return web_contents_.get(); }
655 media::VideoCaptureDevice* device() { return device_.get(); } 622 media::VideoCaptureDevice* device() { return device_.get(); }
656 623
657 // Returns the device scale factor of the capture target's native view. This 624 // Returns the device scale factor of the capture target's native view. This
658 // is necessary because, architecturally, the FakeScreen implementation is 625 // is necessary because, architecturally, the TestScreen implementation is
659 // ignored on Mac platforms (when determining the device scale factor for a 626 // ignored on Mac platforms (when determining the device scale factor for a
660 // particular window). 627 // particular window).
661 float GetDeviceScaleFactor() const { 628 float GetDeviceScaleFactor() const {
662 RenderWidgetHostView* const view = 629 RenderWidgetHostView* const view =
663 web_contents_->GetRenderViewHost()->GetView(); 630 web_contents_->GetRenderViewHost()->GetView();
664 CHECK(view); 631 CHECK(view);
665 return ui::GetScaleFactorForNativeView(view->GetNativeView()); 632 return ui::GetScaleFactorForNativeView(view->GetNativeView());
666 } 633 }
667 634
668 void SimulateDrawEvent() { 635 void SimulateDrawEvent() {
(...skipping 27 matching lines...) Expand all
696 as_web_contents_impl->GetMainFrame()->GetRenderWidgetHost(), true); 663 as_web_contents_impl->GetMainFrame()->GetRenderWidgetHost(), true);
697 } 664 }
698 665
699 void DestroyVideoCaptureDevice() { device_.reset(); } 666 void DestroyVideoCaptureDevice() { device_.reset(); }
700 667
701 StubClientObserver* client_observer() { 668 StubClientObserver* client_observer() {
702 return &client_observer_; 669 return &client_observer_;
703 } 670 }
704 671
705 private: 672 private:
706 FakeScreen fake_screen_; 673 gfx::test::TestScreen test_screen_;
707 674
708 StubClientObserver client_observer_; 675 StubClientObserver client_observer_;
709 676
710 // The controller controls which pixel patterns to produce. 677 // The controller controls which pixel patterns to produce.
711 CaptureTestSourceController controller_; 678 CaptureTestSourceController controller_;
712 679
713 // Self-registering RenderProcessHostFactory. 680 // Self-registering RenderProcessHostFactory.
714 scoped_ptr<MockRenderProcessHostFactory> render_process_host_factory_; 681 scoped_ptr<MockRenderProcessHostFactory> render_process_host_factory_;
715 682
716 // Creates capture-capable RenderViewHosts whose pixel content production is 683 // Creates capture-capable RenderViewHosts whose pixel content production is
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColorAndFrameSize( 1012 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColorAndFrameSize(
1046 SK_ColorBLACK, gfx::Size(kTestWidth, 1013 SK_ColorBLACK, gfx::Size(kTestWidth,
1047 kTestWidth * arbitrary_source_size.height() / 1014 kTestWidth * arbitrary_source_size.height() /
1048 arbitrary_source_size.width()))); 1015 arbitrary_source_size.width())));
1049 1016
1050 device()->StopAndDeAllocate(); 1017 device()->StopAndDeAllocate();
1051 } 1018 }
1052 1019
1053 } // namespace 1020 } // namespace
1054 } // namespace content 1021 } // namespace content
OLDNEW
« no previous file with comments | « chrome/chrome_tests_unit.gypi ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698