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
32class 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