tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

window_finder_mac.mm (1610B)


      1 /*
      2 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
      3 *
      4 *  Use of this source code is governed by a BSD-style license
      5 *  that can be found in the LICENSE file in the root of the source
      6 *  tree. An additional intellectual property rights grant can be found
      7 *  in the file PATENTS.  All contributing project authors may
      8 *  be found in the AUTHORS file in the root of the source tree.
      9 */
     10 
     11 #include "modules/desktop_capture/window_finder_mac.h"
     12 
     13 #include <CoreFoundation/CoreFoundation.h>
     14 
     15 #include <memory>
     16 #include <utility>
     17 
     18 #include "modules/desktop_capture/mac/desktop_configuration.h"
     19 #include "modules/desktop_capture/mac/desktop_configuration_monitor.h"
     20 #include "modules/desktop_capture/mac/window_list_utils.h"
     21 
     22 namespace webrtc {
     23 
     24 WindowFinderMac::WindowFinderMac(
     25    webrtc::scoped_refptr<DesktopConfigurationMonitor> configuration_monitor)
     26    : configuration_monitor_(std::move(configuration_monitor)) {}
     27 WindowFinderMac::~WindowFinderMac() = default;
     28 
     29 WindowId WindowFinderMac::GetWindowUnderPoint(DesktopVector point) {
     30  WindowId id = kNullWindowId;
     31  GetWindowList(
     32      [&id, point](CFDictionaryRef window) {
     33        DesktopRect bounds;
     34        bounds = GetWindowBounds(window);
     35        if (bounds.Contains(point)) {
     36          id = GetWindowId(window);
     37          return false;
     38        }
     39        return true;
     40      },
     41      true,
     42      true);
     43  return id;
     44 }
     45 
     46 // static
     47 std::unique_ptr<WindowFinder> WindowFinder::Create(
     48    const WindowFinder::Options& options) {
     49  return std::make_unique<WindowFinderMac>(options.configuration_monitor);
     50 }
     51 
     52 }  // namespace webrtc