Use WindowFinder in WindowCapturer to detect IsOccluded()

In this change,
bool DesktopCapturer::IsOccluded(const DesktopVector& pos);
is added to DesktopCapturer interface. This function returns true if the |pos|
is hidden by other elements on the display.

The function expects to return false for ScreenCapturer implementations:
everything is visible on the screen.

In WindowCapturer implementations, WindowFinder is expected to be used to help
detect the WindowId under |pos|. If the window_id_ equals to the window id
returned by WindowFinder, this function returns false.

To ensure the correct coordinate is used, a comment is also added to
WindowFinder::GetWindowUnderPoint() function. Considering it's used only in
desktop_capture module, using system coordinate is simpler.

Bug: webrtc:7950
Change-Id: I8ac4fbd5f4a612388f1593907805cfb2c359f70f
Reviewed-by: Jamie Walch <>
Commit-Queue: Zijie He <>
Cr-Original-Commit-Position: refs/heads/master@{#19590}
Cr-Mirrored-Commit: 12827113a1c1467065b124886dd658e6274a5ba5
10 files changed