diff --git a/webrtc/modules/desktop_capture/cropping_window_capturer.cc b/webrtc/modules/desktop_capture/cropping_window_capturer.cc
index a0f89f6..494047d 100644
--- a/webrtc/modules/desktop_capture/cropping_window_capturer.cc
+++ b/webrtc/modules/desktop_capture/cropping_window_capturer.cc
@@ -100,6 +100,17 @@
       CreateCroppedDesktopFrame(std::move(screen_frame), window_rect));
 }
 
+bool CroppingWindowCapturer::IsOccluded(const DesktopVector& pos) {
+  // Returns true if either capturer returns true.
+  if (window_capturer_->IsOccluded(pos)) {
+    return true;
+  }
+  if (screen_capturer_ != nullptr && screen_capturer_->IsOccluded(pos)) {
+    return true;
+  }
+  return false;
+}
+
 #if !defined(WEBRTC_WIN)
 // CroppingWindowCapturer is implemented only for windows. On other platforms
 // the regular window capturer is used.
diff --git a/webrtc/modules/desktop_capture/cropping_window_capturer.h b/webrtc/modules/desktop_capture/cropping_window_capturer.h
index b8b2751..3542fbd 100644
--- a/webrtc/modules/desktop_capture/cropping_window_capturer.h
+++ b/webrtc/modules/desktop_capture/cropping_window_capturer.h
@@ -38,6 +38,7 @@
   bool GetSourceList(SourceList* sources) override;
   bool SelectSource(SourceId id) override;
   bool FocusOnSelectedSource() override;
+  bool IsOccluded(const DesktopVector& pos) override;
 
   // DesktopCapturer::Callback implementation, passed to |screen_capturer_| to
   // intercept the capture result.
diff --git a/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.cc b/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.cc
index 8a93bc1..3bf4c53 100644
--- a/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.cc
+++ b/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.cc
@@ -181,6 +181,10 @@
   return base_capturer_->FocusOnSelectedSource();
 }
 
+bool DesktopCapturerDifferWrapper::IsOccluded(const DesktopVector& pos) {
+  return base_capturer_->IsOccluded(pos);
+}
+
 void DesktopCapturerDifferWrapper::OnCaptureResult(
     Result result,
     std::unique_ptr<DesktopFrame> input_frame) {
diff --git a/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.h b/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.h
index 0747a4e..1d037a1 100644
--- a/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.h
+++ b/webrtc/modules/desktop_capture/desktop_capturer_differ_wrapper.h
@@ -45,6 +45,7 @@
   bool GetSourceList(SourceList* screens) override;
   bool SelectSource(SourceId id) override;
   bool FocusOnSelectedSource() override;
+  bool IsOccluded(const DesktopVector& pos) override;
 
  private:
   // DesktopCapturer::Callback interface.
diff --git a/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc b/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc
index e6fa9d5..6ae046e 100644
--- a/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc
+++ b/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc
@@ -149,6 +149,15 @@
          secondary_capturer_->FocusOnSelectedSource();
 }
 
+bool FallbackDesktopCapturerWrapper::IsOccluded(const DesktopVector& pos) {
+  // Returns true if either capturer returns true.
+  if (main_capturer_permanent_error_) {
+    return secondary_capturer_->IsOccluded(pos);
+  }
+  return main_capturer_->IsOccluded(pos) ||
+         secondary_capturer_->IsOccluded(pos);
+}
+
 void FallbackDesktopCapturerWrapper::OnCaptureResult(
     Result result,
     std::unique_ptr<DesktopFrame> frame) {
diff --git a/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.h b/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.h
index b6436ce..8e79026 100644
--- a/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.h
+++ b/webrtc/modules/desktop_capture/fallback_desktop_capturer_wrapper.h
@@ -44,6 +44,7 @@
   bool GetSourceList(SourceList* sources) override;
   bool SelectSource(SourceId id) override;
   bool FocusOnSelectedSource() override;
+  bool IsOccluded(const DesktopVector& pos) override;
 
  private:
   // DesktopCapturer::Callback interface.
