| // Copyright (c) 2015 The Chromium Embedded Framework Authors. All rights |
| // reserved. Use of this source code is governed by a BSD-style license that |
| // can be found in the LICENSE file. |
| |
| #include "tests/cefclient/browser/temp_window_mac.h" |
| |
| #include <Cocoa/Cocoa.h> |
| |
| #include "include/base/cef_logging.h" |
| #include "include/cef_app.h" |
| |
| namespace client { |
| |
| namespace { |
| |
| TempWindowMac* g_temp_window = NULL; |
| |
| } // namespace |
| |
| class TempWindowMacImpl { |
| public: |
| TempWindowMacImpl() { |
| // Create a borderless non-visible 1x1 window. |
| window_ = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1) |
| styleMask:NSBorderlessWindowMask |
| backing:NSBackingStoreBuffered |
| defer:NO]; |
| CHECK(window_); |
| } |
| ~TempWindowMacImpl() { |
| DCHECK(window_); |
| [window_ close]; |
| } |
| |
| private: |
| NSWindow* window_; |
| |
| friend class TempWindowMac; |
| }; |
| |
| TempWindowMac::TempWindowMac() { |
| DCHECK(!g_temp_window); |
| impl_.reset(new TempWindowMacImpl); |
| g_temp_window = this; |
| } |
| |
| TempWindowMac::~TempWindowMac() { |
| impl_.reset(); |
| g_temp_window = NULL; |
| } |
| |
| // static |
| CefWindowHandle TempWindowMac::GetWindowHandle() { |
| DCHECK(g_temp_window); |
| return CAST_NSVIEW_TO_CEF_WINDOW_HANDLE( |
| g_temp_window->impl_->window_.contentView); |
| } |
| |
| } // namespace client |