Home | History | Annotate | Download | only in cocoa
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #import <Cocoa/Cocoa.h>
      6 
      7 #include <string>
      8 
      9 #include "base/callback.h"
     10 #include "base/gtest_prod_util.h"
     11 #include "base/mac/scoped_nsobject.h"
     12 #include "base/strings/string16.h"
     13 #include "chrome/browser/ui/screen_capture_notification_ui.h"
     14 
     15 // Controller for the screen capture notification window which allows the user
     16 // to quickly stop screen capturing.
     17 @interface ScreenCaptureNotificationController
     18     : NSWindowController<NSWindowDelegate> {
     19  @private
     20   base::Closure stop_callback_;
     21   base::scoped_nsobject<NSButton> stopButton_;
     22   base::scoped_nsobject<NSButton> minimizeButton_;
     23 }
     24 
     25 - (id)initWithCallback:(const base::Closure&)stop_callback
     26                   text:(const base::string16&)text;
     27 - (void)stopSharing:(id)sender;
     28 - (void)minimize:(id)sender;
     29 
     30 @end
     31 
     32 class ScreenCaptureNotificationUICocoa : public ScreenCaptureNotificationUI {
     33  public:
     34   explicit ScreenCaptureNotificationUICocoa(const base::string16& text);
     35   virtual ~ScreenCaptureNotificationUICocoa();
     36 
     37   // ScreenCaptureNotificationUI interface.
     38   virtual gfx::NativeViewId OnStarted(const base::Closure& stop_callback)
     39       OVERRIDE;
     40 
     41  private:
     42   friend class ScreenCaptureNotificationUICocoaTest;
     43 
     44   const base::string16 text_;
     45   base::scoped_nsobject<ScreenCaptureNotificationController> windowController_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(ScreenCaptureNotificationUICocoa);
     48 };
     49