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

Unified Diff: webrtc/base/macwindowpicker.cc

Issue 2511103002: Delete WindowPicker class and subclasses. (Closed)
Patch Set: Drop win32windowpicker_unittest.cc from build. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/base/macwindowpicker.h ('k') | webrtc/base/macwindowpicker_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/macwindowpicker.cc
diff --git a/webrtc/base/macwindowpicker.cc b/webrtc/base/macwindowpicker.cc
deleted file mode 100644
index d43d0e8cbfbd6a5385fb2934e6d20f81609e2b7b..0000000000000000000000000000000000000000
--- a/webrtc/base/macwindowpicker.cc
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2010 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include "webrtc/base/macwindowpicker.h"
-
-#include <ApplicationServices/ApplicationServices.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <dlfcn.h>
-
-#include "webrtc/base/logging.h"
-#include "webrtc/base/macutils.h"
-
-namespace rtc {
-
-static const char* kCoreGraphicsName =
- "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/"
- "CoreGraphics.framework/CoreGraphics";
-
-static const char* kWindowListCopyWindowInfo = "CGWindowListCopyWindowInfo";
-static const char* kWindowListCreateDescriptionFromArray =
- "CGWindowListCreateDescriptionFromArray";
-
-// Function pointer for holding the CGWindowListCopyWindowInfo function.
-typedef CFArrayRef(*CGWindowListCopyWindowInfoProc)(CGWindowListOption,
- CGWindowID);
-
-// Function pointer for holding the CGWindowListCreateDescriptionFromArray
-// function.
-typedef CFArrayRef(*CGWindowListCreateDescriptionFromArrayProc)(CFArrayRef);
-
-MacWindowPicker::MacWindowPicker() : lib_handle_(NULL), get_window_list_(NULL),
- get_window_list_desc_(NULL) {
-}
-
-MacWindowPicker::~MacWindowPicker() {
- if (lib_handle_ != NULL) {
- dlclose(lib_handle_);
- }
-}
-
-bool MacWindowPicker::Init() {
- // TODO: If this class grows to use more dynamically functions
- // from the CoreGraphics framework, consider using
- // webrtc/base/latebindingsymboltable.h.
- lib_handle_ = dlopen(kCoreGraphicsName, RTLD_NOW);
- if (lib_handle_ == NULL) {
- LOG(LS_ERROR) << "Could not load CoreGraphics";
- return false;
- }
-
- get_window_list_ = dlsym(lib_handle_, kWindowListCopyWindowInfo);
- get_window_list_desc_ =
- dlsym(lib_handle_, kWindowListCreateDescriptionFromArray);
- if (get_window_list_ == NULL || get_window_list_desc_ == NULL) {
- // The CGWindowListCopyWindowInfo and the
- // CGWindowListCreateDescriptionFromArray functions was introduced
- // in Leopard(10.5) so this is a normal failure on Tiger.
- LOG(LS_INFO) << "Failed to load Core Graphics symbols";
- dlclose(lib_handle_);
- lib_handle_ = NULL;
- return false;
- }
-
- return true;
-}
-
-bool MacWindowPicker::IsVisible(const WindowId& id) {
- // Init if we're not already inited.
- if (get_window_list_desc_ == NULL && !Init()) {
- return false;
- }
- CGWindowID ids[1];
- ids[0] = id.id();
- CFArrayRef window_id_array =
- CFArrayCreate(NULL, reinterpret_cast<const void **>(&ids), 1, NULL);
-
- CFArrayRef window_array =
- reinterpret_cast<CGWindowListCreateDescriptionFromArrayProc>(
- get_window_list_desc_)(window_id_array);
- if (window_array == NULL || 0 == CFArrayGetCount(window_array)) {
- // Could not find the window. It might have been closed.
- LOG(LS_INFO) << "Window not found";
- CFRelease(window_id_array);
- return false;
- }
-
- CFDictionaryRef window = reinterpret_cast<CFDictionaryRef>(
- CFArrayGetValueAtIndex(window_array, 0));
- CFBooleanRef is_visible = reinterpret_cast<CFBooleanRef>(
- CFDictionaryGetValue(window, kCGWindowIsOnscreen));
-
- // Check that the window is visible. If not we might crash.
- bool visible = false;
- if (is_visible != NULL) {
- visible = CFBooleanGetValue(is_visible);
- }
- CFRelease(window_id_array);
- CFRelease(window_array);
- return visible;
-}
-
-bool MacWindowPicker::MoveToFront(const WindowId& id) {
- return false;
-}
-
-bool MacWindowPicker::GetDesktopList(DesktopDescriptionList* descriptions) {
- const uint32_t kMaxDisplays = 128;
- CGDirectDisplayID active_displays[kMaxDisplays];
- uint32_t display_count = 0;
-
- CGError err = CGGetActiveDisplayList(kMaxDisplays,
- active_displays,
- &display_count);
- if (err != kCGErrorSuccess) {
- LOG_E(LS_ERROR, OS, err) << "Failed to enumerate the active displays.";
- return false;
- }
- for (uint32_t i = 0; i < display_count; ++i) {
- DesktopId id(active_displays[i], static_cast<int>(i));
- // TODO: Figure out an appropriate desktop title.
- DesktopDescription desc(id, "");
- desc.set_primary(CGDisplayIsMain(id.id()));
- descriptions->push_back(desc);
- }
- return display_count > 0;
-}
-
-bool MacWindowPicker::GetDesktopDimensions(const DesktopId& id,
- int* width,
- int* height) {
- *width = CGDisplayPixelsWide(id.id());
- *height = CGDisplayPixelsHigh(id.id());
- return true;
-}
-
-bool MacWindowPicker::GetWindowList(WindowDescriptionList* descriptions) {
- // Init if we're not already inited.
- if (get_window_list_ == NULL && !Init()) {
- return false;
- }
-
- // Only get onscreen, non-desktop windows.
- CFArrayRef window_array =
- reinterpret_cast<CGWindowListCopyWindowInfoProc>(get_window_list_)(
- kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements,
- kCGNullWindowID);
- if (window_array == NULL) {
- return false;
- }
-
- // Check windows to make sure they have an id, title, and use window layer 0.
- CFIndex i;
- CFIndex count = CFArrayGetCount(window_array);
- for (i = 0; i < count; ++i) {
- CFDictionaryRef window = reinterpret_cast<CFDictionaryRef>(
- CFArrayGetValueAtIndex(window_array, i));
- CFStringRef window_title = reinterpret_cast<CFStringRef>(
- CFDictionaryGetValue(window, kCGWindowName));
- CFNumberRef window_id = reinterpret_cast<CFNumberRef>(
- CFDictionaryGetValue(window, kCGWindowNumber));
- CFNumberRef window_layer = reinterpret_cast<CFNumberRef>(
- CFDictionaryGetValue(window, kCGWindowLayer));
- if (window_title != NULL && window_id != NULL && window_layer != NULL) {
- std::string title_str;
- int id_val, layer_val;
- ToUtf8(window_title, &title_str);
- CFNumberGetValue(window_id, kCFNumberIntType, &id_val);
- CFNumberGetValue(window_layer, kCFNumberIntType, &layer_val);
-
- // Discard windows without a title.
- if (layer_val == 0 && title_str.length() > 0) {
- WindowId id(static_cast<CGWindowID>(id_val));
- WindowDescription desc(id, title_str);
- descriptions->push_back(desc);
- }
- }
- }
-
- CFRelease(window_array);
- return true;
-}
-
-} // namespace rtc
« no previous file with comments | « webrtc/base/macwindowpicker.h ('k') | webrtc/base/macwindowpicker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698