Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: chrome/browser/ui/cocoa/constrained_window_mac.mm

Issue 11111022: Remove TabContents from constrained windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove unrelated gtk code Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/cocoa/constrained_window_mac.h" 5 #include "chrome/browser/ui/cocoa/constrained_window_mac.h"
6 6
7 #include "chrome/browser/ui/browser_finder.h" 7 #include "chrome/browser/ui/browser_finder.h"
8 #include "chrome/browser/ui/browser_window.h" 8 #include "chrome/browser/ui/browser_window.h"
9 #include "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h" 9 #include "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
10 #include "chrome/browser/ui/constrained_window_tab_helper.h" 10 #include "chrome/browser/ui/constrained_window_tab_helper.h"
11 #include "chrome/browser/ui/tab_contents/tab_contents.h"
12 #include "content/public/browser/web_contents.h" 11 #include "content/public/browser/web_contents.h"
13 #include "content/public/browser/web_contents_view.h" 12 #include "content/public/browser/web_contents_view.h"
14 #import "third_party/GTM/AppKit/GTMWindowSheetController.h" 13 #import "third_party/GTM/AppKit/GTMWindowSheetController.h"
15 14
16 ConstrainedWindowMacDelegateSystemSheet:: 15 ConstrainedWindowMacDelegateSystemSheet::
17 ConstrainedWindowMacDelegateSystemSheet(id delegate, SEL didEndSelector) 16 ConstrainedWindowMacDelegateSystemSheet(id delegate, SEL didEndSelector)
18 : systemSheet_(nil), 17 : systemSheet_(nil),
19 delegate_([delegate retain]), 18 delegate_([delegate retain]),
20 didEndSelector_(didEndSelector) {} 19 didEndSelector_(didEndSelector) {}
21 20
22 ConstrainedWindowMacDelegateSystemSheet:: 21 ConstrainedWindowMacDelegateSystemSheet::
23 ~ConstrainedWindowMacDelegateSystemSheet() {} 22 ~ConstrainedWindowMacDelegateSystemSheet() {}
24 23
25 void ConstrainedWindowMacDelegateSystemSheet::set_sheet(id sheet) { 24 void ConstrainedWindowMacDelegateSystemSheet::set_sheet(id sheet) {
26 systemSheet_.reset([sheet retain]); 25 systemSheet_.reset([sheet retain]);
27 } 26 }
28 27
29 NSArray* ConstrainedWindowMacDelegateSystemSheet::GetSheetParameters( 28 NSArray* ConstrainedWindowMacDelegateSystemSheet::GetSheetParameters(
30 id delegate, 29 id delegate,
31 SEL didEndSelector) { 30 SEL didEndSelector) {
32 return [NSArray arrayWithObjects: 31 return
33 [NSNull null], // window, must be [NSNull null] 32 @[[NSNull null], // window, must be [NSNull null]
34 delegate, 33 delegate,
35 [NSValue valueWithPointer:didEndSelector], 34 [NSValue valueWithPointer:didEndSelector],
36 [NSValue valueWithPointer:NULL], // context info for didEndSelector_. 35 [NSValue valueWithPointer:NULL]]; // context info for didEndSelector_.
37 nil];
38 } 36 }
39 37
40 void ConstrainedWindowMacDelegateSystemSheet::RunSheet( 38 void ConstrainedWindowMacDelegateSystemSheet::RunSheet(
41 GTMWindowSheetController* sheetController, 39 GTMWindowSheetController* sheetController,
42 NSView* view) { 40 NSView* view) {
43 NSArray* params = GetSheetParameters(delegate_.get(), didEndSelector_); 41 NSArray* params = GetSheetParameters(delegate_.get(), didEndSelector_);
44 [sheetController beginSystemSheet:systemSheet_ 42 [sheetController beginSystemSheet:systemSheet_
45 modalForView:view 43 modalForView:view
46 withParameters:params]; 44 withParameters:params];
47 } 45 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 GTMWindowSheetController* sheetController, 79 GTMWindowSheetController* sheetController,
82 NSView* view) { 80 NSView* view) {
83 [sheetController beginSheet:customSheet_.get() 81 [sheetController beginSheet:customSheet_.get()
84 modalForView:view 82 modalForView:view
85 modalDelegate:delegate_.get() 83 modalDelegate:delegate_.get()
86 didEndSelector:didEndSelector_ 84 didEndSelector:didEndSelector_
87 contextInfo:NULL]; 85 contextInfo:NULL];
88 } 86 }
89 87
90 ConstrainedWindowMac::ConstrainedWindowMac( 88 ConstrainedWindowMac::ConstrainedWindowMac(
91 TabContents* tab_contents, ConstrainedWindowMacDelegate* delegate) 89 content::WebContents* web_contents, ConstrainedWindowMacDelegate* delegate)
92 : tab_contents_(tab_contents), 90 : web_contents_(web_contents),
93 delegate_(delegate), 91 delegate_(delegate),
94 controller_(nil), 92 controller_(nil),
95 should_be_visible_(false), 93 should_be_visible_(false),
96 closing_(false) { 94 closing_(false) {
97 DCHECK(tab_contents); 95 DCHECK(web_contents);
98 DCHECK(delegate); 96 DCHECK(delegate);
97 ConstrainedWindowTabHelper::CreateForWebContents(web_contents);
99 98
100 ConstrainedWindowTabHelper* constrained_window_tab_helper = 99 ConstrainedWindowTabHelper* constrained_window_tab_helper =
101 ConstrainedWindowTabHelper::FromWebContents(tab_contents->web_contents()); 100 ConstrainedWindowTabHelper::FromWebContents(web_contents);
102 constrained_window_tab_helper->AddConstrainedDialog(this); 101 constrained_window_tab_helper->AddConstrainedDialog(this);
103 } 102 }
104 103
105 ConstrainedWindowMac::~ConstrainedWindowMac() {} 104 ConstrainedWindowMac::~ConstrainedWindowMac() {}
106 105
107 void ConstrainedWindowMac::ShowConstrainedWindow() { 106 void ConstrainedWindowMac::ShowConstrainedWindow() {
108 should_be_visible_ = true; 107 should_be_visible_ = true;
109 // The WebContents only has a native window if it is currently visible. In 108 // The WebContents only has a native window if it is currently visible. In
110 // this case, open the sheet now. Else, Realize() will be called later, when 109 // this case, open the sheet now. Else, Realize() will be called later, when
111 // our tab becomes visible. 110 // our tab becomes visible.
112 NSWindow* window = 111 NSWindow* window = web_contents_->GetView()->GetTopLevelNativeWindow();
113 tab_contents_->web_contents()->GetView()->GetTopLevelNativeWindow();
114 NSWindowController<ConstrainedWindowSupport>* window_controller = nil; 112 NSWindowController<ConstrainedWindowSupport>* window_controller = nil;
115 while (window) { 113 while (window) {
116 if ([[window windowController] conformsToProtocol: 114 if ([[window windowController] conformsToProtocol:
117 @protocol(ConstrainedWindowSupport)]) { 115 @protocol(ConstrainedWindowSupport)]) {
118 window_controller = [window windowController]; 116 window_controller = [window windowController];
119 break; 117 break;
120 } 118 }
121 window = [window parentWindow]; 119 window = [window parentWindow];
122 } 120 }
123 121
(...skipping 11 matching lines...) Expand all
135 // Protection against reentrancy, which might otherwise become a problem if 133 // Protection against reentrancy, which might otherwise become a problem if
136 // DeleteDelegate forcibly closes a constrained window in a way that results 134 // DeleteDelegate forcibly closes a constrained window in a way that results
137 // in CloseConstrainedWindow being called again. 135 // in CloseConstrainedWindow being called again.
138 if (closing_) 136 if (closing_)
139 return; 137 return;
140 138
141 closing_ = true; 139 closing_ = true;
142 140
143 delegate_->DeleteDelegate(); 141 delegate_->DeleteDelegate();
144 ConstrainedWindowTabHelper* constrained_window_tab_helper = 142 ConstrainedWindowTabHelper* constrained_window_tab_helper =
145 ConstrainedWindowTabHelper::FromWebContents( 143 ConstrainedWindowTabHelper::FromWebContents(web_contents_);
146 tab_contents_->web_contents());
147 constrained_window_tab_helper->WillClose(this); 144 constrained_window_tab_helper->WillClose(this);
148 145
149 delete this; 146 delete this;
150 } 147 }
151 148
152 bool ConstrainedWindowMac::CanShowConstrainedWindow() { 149 bool ConstrainedWindowMac::CanShowConstrainedWindow() {
153 Browser* browser = 150 Browser* browser = browser::FindBrowserWithWebContents(web_contents_);
154 browser::FindBrowserWithWebContents(tab_contents_->web_contents());
155 if (!browser) 151 if (!browser)
156 return true; 152 return true;
157 return !browser->window()->IsInstantTabShowing(); 153 return !browser->window()->IsInstantTabShowing();
158 } 154 }
159 155
160 void ConstrainedWindowMac::Realize( 156 void ConstrainedWindowMac::Realize(
161 NSWindowController<ConstrainedWindowSupport>* controller) { 157 NSWindowController<ConstrainedWindowSupport>* controller) {
162 if (!should_be_visible_) 158 if (!should_be_visible_)
163 return; 159 return;
164 160
165 if (controller_ != nil) { 161 if (controller_ != nil) {
166 DCHECK(controller_ == controller); 162 DCHECK(controller_ == controller);
167 return; 163 return;
168 } 164 }
169 DCHECK(controller != nil); 165 DCHECK(controller != nil);
170 166
171 // Remember the controller we're adding ourselves to, so that we can later 167 // Remember the controller we're adding ourselves to, so that we can later
172 // remove us from it. 168 // remove us from it.
173 controller_ = controller; 169 controller_ = controller;
174 delegate_->RunSheet([controller_ sheetController], 170 delegate_->RunSheet([controller_ sheetController],
175 GetSheetParentViewForTabContents(tab_contents_)); 171 GetSheetParentViewForWebContents(web_contents_));
176 delegate_->set_sheet_open(true); 172 delegate_->set_sheet_open(true);
177 } 173 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/constrained_window_mac.h ('k') | chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698