| Index: chrome/browser/ui/cocoa/constrained_html_delegate_mac.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/constrained_html_delegate_mac.mm (revision 133926)
|
| +++ chrome/browser/ui/cocoa/constrained_html_delegate_mac.mm (working copy)
|
| @@ -1,143 +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 "chrome/browser/ui/webui/constrained_html_ui_delegate_impl.h"
|
| -
|
| -#import <Cocoa/Cocoa.h>
|
| -
|
| -#include "base/memory/scoped_nsobject.h"
|
| -#include "chrome/browser/ui/cocoa/constrained_window_mac.h"
|
| -#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
|
| -#include "chrome/browser/ui/webui/html_dialog_ui.h"
|
| -#include "chrome/browser/ui/webui/html_dialog_tab_contents_delegate.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -using content::WebContents;
|
| -
|
| -class ConstrainedHtmlDelegateMac :
|
| - public ConstrainedWindowMacDelegateCustomSheet,
|
| - public ConstrainedHtmlUIDelegate {
|
| -
|
| - public:
|
| - ConstrainedHtmlDelegateMac(Profile* profile,
|
| - HtmlDialogUIDelegate* delegate,
|
| - HtmlDialogTabContentsDelegate* tab_delegate);
|
| - virtual ~ConstrainedHtmlDelegateMac() {}
|
| -
|
| - void set_window(ConstrainedWindow* window) {
|
| - return impl_->set_window(window);
|
| - }
|
| -
|
| - // ConstrainedHtmlUIDelegate interface
|
| - virtual const HtmlDialogUIDelegate* GetHtmlDialogUIDelegate() const OVERRIDE {
|
| - return impl_->GetHtmlDialogUIDelegate();
|
| - }
|
| - virtual HtmlDialogUIDelegate* GetHtmlDialogUIDelegate() OVERRIDE {
|
| - return impl_->GetHtmlDialogUIDelegate();
|
| - }
|
| - virtual void OnDialogCloseFromWebUI() OVERRIDE {
|
| - return impl_->OnDialogCloseFromWebUI();
|
| - }
|
| - virtual void ReleaseTabContentsOnDialogClose() OVERRIDE {
|
| - return impl_->ReleaseTabContentsOnDialogClose();
|
| - }
|
| - virtual ConstrainedWindow* window() OVERRIDE {
|
| - return impl_->window();
|
| - }
|
| - virtual TabContentsWrapper* tab() OVERRIDE {
|
| - return impl_->tab();
|
| - }
|
| -
|
| - // ConstrainedWindowMacDelegateCustomSheet interface
|
| - virtual void DeleteDelegate() OVERRIDE {
|
| - // From ConstrainedWindowMacDelegate: "you MUST close the sheet belonging to
|
| - // your delegate in this method."
|
| - if (is_sheet_open())
|
| - [NSApp endSheet:sheet()];
|
| - if (!impl_->closed_via_webui())
|
| - GetHtmlDialogUIDelegate()->OnDialogClosed("");
|
| - delete this;
|
| - }
|
| -
|
| - private:
|
| - scoped_ptr<ConstrainedHtmlUIDelegateImpl> impl_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ConstrainedHtmlDelegateMac);
|
| -};
|
| -
|
| -// The delegate used to forward events from the sheet to the constrained
|
| -// window delegate. This bridge needs to be passed into the customsheet
|
| -// to allow the HtmlDialog to know when the sheet closes.
|
| -@interface ConstrainedHtmlDialogSheetCocoa : NSObject {
|
| - ConstrainedHtmlDelegateMac* constrainedHtmlDelegate_; // weak
|
| -}
|
| -- (id)initWithConstrainedHtmlDelegateMac:
|
| - (ConstrainedHtmlDelegateMac*)ConstrainedHtmlDelegateMac;
|
| -- (void)sheetDidEnd:(NSWindow*)sheet
|
| - returnCode:(int)returnCode
|
| - contextInfo:(void*)contextInfo;
|
| -@end
|
| -
|
| -ConstrainedHtmlDelegateMac::ConstrainedHtmlDelegateMac(
|
| - Profile* profile,
|
| - HtmlDialogUIDelegate* delegate,
|
| - HtmlDialogTabContentsDelegate* tab_delegate)
|
| - : impl_(new ConstrainedHtmlUIDelegateImpl(profile, delegate, tab_delegate)) {
|
| - // Create NSWindow to hold web_contents in the constrained sheet:
|
| - gfx::Size size;
|
| - delegate->GetDialogSize(&size);
|
| - NSRect frame = NSMakeRect(0, 0, size.width(), size.height());
|
| -
|
| - // |window| is retained by the ConstrainedWindowMacDelegateCustomSheet when
|
| - // the sheet is initialized.
|
| - scoped_nsobject<NSWindow> window;
|
| - window.reset(
|
| - [[NSWindow alloc] initWithContentRect:frame
|
| - styleMask:NSTitledWindowMask
|
| - backing:NSBackingStoreBuffered
|
| - defer:YES]);
|
| -
|
| - [window.get() setContentView:tab()->web_contents()->GetNativeView()];
|
| -
|
| - // Set the custom sheet to point to the new window.
|
| - ConstrainedWindowMacDelegateCustomSheet::init(
|
| - window.get(),
|
| - [[[ConstrainedHtmlDialogSheetCocoa alloc]
|
| - initWithConstrainedHtmlDelegateMac:this] autorelease],
|
| - @selector(sheetDidEnd:returnCode:contextInfo:));
|
| -}
|
| -
|
| -// static
|
| -ConstrainedHtmlUIDelegate* ConstrainedHtmlUI::CreateConstrainedHtmlDialog(
|
| - Profile* profile,
|
| - HtmlDialogUIDelegate* delegate,
|
| - HtmlDialogTabContentsDelegate* tab_delegate,
|
| - TabContentsWrapper* wrapper) {
|
| - // Deleted when ConstrainedHtmlDelegateMac::DeleteDelegate() runs.
|
| - ConstrainedHtmlDelegateMac* constrained_delegate =
|
| - new ConstrainedHtmlDelegateMac(profile, delegate, tab_delegate);
|
| - // Deleted when ConstrainedHtmlDelegateMac::OnDialogCloseFromWebUI() runs.
|
| - ConstrainedWindow* constrained_window =
|
| - new ConstrainedWindowMac(wrapper, constrained_delegate);
|
| - constrained_delegate->set_window(constrained_window);
|
| - return constrained_delegate;
|
| -}
|
| -
|
| -@implementation ConstrainedHtmlDialogSheetCocoa
|
| -
|
| -- (id)initWithConstrainedHtmlDelegateMac:
|
| - (ConstrainedHtmlDelegateMac*)ConstrainedHtmlDelegateMac {
|
| - if ((self = [super init]))
|
| - constrainedHtmlDelegate_ = ConstrainedHtmlDelegateMac;
|
| - return self;
|
| -}
|
| -
|
| -- (void)sheetDidEnd:(NSWindow*)sheet
|
| - returnCode:(int)returnCode
|
| - contextInfo:(void *)contextInfo {
|
| - [sheet orderOut:self];
|
| -}
|
| -
|
| -@end
|
|
|