| Index: chrome/browser/ui/cocoa/panels/display_settings_provider_cocoa.mm
|
| diff --git a/chrome/browser/ui/cocoa/panels/display_settings_provider_cocoa.mm b/chrome/browser/ui/cocoa/panels/display_settings_provider_cocoa.mm
|
| deleted file mode 100644
|
| index 5894801f6e0b159374e3315ba89af8b861594bc1..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/panels/display_settings_provider_cocoa.mm
|
| +++ /dev/null
|
| @@ -1,148 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium 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 "base/bind.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#import "chrome/browser/app_controller_mac.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/fullscreen.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/cocoa/last_active_browser_cocoa.h"
|
| -#include "chrome/browser/ui/panels/display_settings_provider.h"
|
| -#include "content/public/browser/notification_observer.h"
|
| -#include "content/public/browser/notification_registrar.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_source.h"
|
| -#include "ui/base/work_area_watcher_observer.h"
|
| -
|
| -namespace {
|
| -
|
| -// The time, in milliseconds, that a fullscreen check will be started after
|
| -// the active workspace change is notified. This value is from experiment.
|
| -const int kCheckFullScreenDelayTimeMs = 200;
|
| -
|
| -class DisplaySettingsProviderCocoa : public DisplaySettingsProvider,
|
| - public ui::WorkAreaWatcherObserver,
|
| - public content::NotificationObserver {
|
| - public:
|
| - DisplaySettingsProviderCocoa();
|
| - ~DisplaySettingsProviderCocoa() override;
|
| -
|
| - void ActiveSpaceChanged();
|
| -
|
| - protected:
|
| - // Overridden from DisplaySettingsProvider:
|
| - bool NeedsPeriodicFullScreenCheck() const override;
|
| - bool IsFullScreen() override;
|
| -
|
| - // Overridden from ui::WorkAreaWatcherObserver:
|
| - void WorkAreaChanged() override;
|
| -
|
| - // Overridden from content::NotificationObserver:
|
| - void Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) override;
|
| -
|
| - private:
|
| - void ActiveWorkSpaceChanged();
|
| -
|
| - content::NotificationRegistrar registrar_;
|
| - id active_space_change_;
|
| -
|
| - // Owned by MessageLoop after posting.
|
| - base::WeakPtrFactory<DisplaySettingsProviderCocoa> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DisplaySettingsProviderCocoa);
|
| -};
|
| -
|
| -DisplaySettingsProviderCocoa::DisplaySettingsProviderCocoa()
|
| - : active_space_change_(nil),
|
| - weak_factory_(this) {
|
| - AppController* appController = static_cast<AppController*>([NSApp delegate]);
|
| - [appController addObserverForWorkAreaChange:this];
|
| -
|
| - registrar_.Add(
|
| - this,
|
| - chrome::NOTIFICATION_FULLSCREEN_CHANGED,
|
| - content::NotificationService::AllSources());
|
| -
|
| - active_space_change_ = [[[NSWorkspace sharedWorkspace] notificationCenter]
|
| - addObserverForName:NSWorkspaceActiveSpaceDidChangeNotification
|
| - object:nil
|
| - queue:[NSOperationQueue mainQueue]
|
| - usingBlock:^(NSNotification* notification) {
|
| - ActiveWorkSpaceChanged();
|
| - }];
|
| -}
|
| -
|
| -DisplaySettingsProviderCocoa::~DisplaySettingsProviderCocoa() {
|
| - AppController* appController = static_cast<AppController*>([NSApp delegate]);
|
| - [appController removeObserverForWorkAreaChange:this];
|
| -
|
| - [[[NSWorkspace sharedWorkspace] notificationCenter]
|
| - removeObserver:active_space_change_];
|
| -}
|
| -
|
| -bool DisplaySettingsProviderCocoa::NeedsPeriodicFullScreenCheck() const {
|
| - // Lion system introduces fullscreen support. When a window of an application
|
| - // enters fullscreen mode, the system will automatically hide all other
|
| - // windows, even including topmost windows that come from other applications.
|
| - // So we don't need to do anything when any other application enters
|
| - // fullscreen mode. We still need to handle the case when chrome enters
|
| - // fullscreen mode and our topmost windows will not get hided by the system.
|
| - return false;
|
| -}
|
| -
|
| -bool DisplaySettingsProviderCocoa::IsFullScreen() {
|
| - Browser* browser = chrome::GetLastActiveBrowser();
|
| - if (!browser)
|
| - return false;
|
| - BrowserWindow* browser_window = browser->window();
|
| - if (!browser_window->IsFullscreen())
|
| - return false;
|
| -
|
| - // If the user switches to another space where the fullscreen browser window
|
| - // does not live, we do not call it fullscreen.
|
| - NSWindow* native_window = browser_window->GetNativeWindow();
|
| - return [native_window isOnActiveSpace];
|
| -}
|
| -
|
| -void DisplaySettingsProviderCocoa::WorkAreaChanged() {
|
| - OnDisplaySettingsChanged();
|
| -}
|
| -
|
| -void DisplaySettingsProviderCocoa::Observe(
|
| - int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| - DCHECK_EQ(chrome::NOTIFICATION_FULLSCREEN_CHANGED, type);
|
| - // When we receive the fullscreen notification, the Chrome Window has not been
|
| - // put on the active space yet and thus IsFullScreen will return false.
|
| - // Since the fullscreen result is already known here, we can pass it dierctly
|
| - // to CheckFullScreenMode.
|
| - bool is_fullscreen = *(content::Details<bool>(details)).ptr();
|
| - CheckFullScreenMode(
|
| - is_fullscreen ? ASSUME_FULLSCREEN_ON : ASSUME_FULLSCREEN_OFF);
|
| -}
|
| -
|
| -void DisplaySettingsProviderCocoa::ActiveWorkSpaceChanged() {
|
| - // The active workspace notification might be received earlier than the
|
| - // browser window knows that it is not in active space.
|
| - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&DisplaySettingsProviderCocoa::CheckFullScreenMode,
|
| - weak_factory_.GetWeakPtr(), PERFORM_FULLSCREEN_CHECK),
|
| - base::TimeDelta::FromMilliseconds(kCheckFullScreenDelayTimeMs));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -DisplaySettingsProvider* DisplaySettingsProvider::Create() {
|
| - return new DisplaySettingsProviderCocoa();
|
| -}
|
|
|