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

Side by Side Diff: content/browser/renderer_host/popup_menu_helper_mac.mm

Issue 17593006: mac: Update clients of scoped_nsobject.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: iwyu, scoped_nsprotocol Created 7 years, 6 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 #import <Carbon/Carbon.h> 5 #import <Carbon/Carbon.h>
6 6
7 #include "content/browser/renderer_host/popup_menu_helper_mac.h" 7 #include "content/browser/renderer_host/popup_menu_helper_mac.h"
8 8
9 #include "base/mac/scoped_nsobject.h"
9 #import "base/mac/scoped_sending_event.h" 10 #import "base/mac/scoped_sending_event.h"
10 #include "base/memory/scoped_nsobject.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "content/browser/renderer_host/render_view_host_impl.h" 12 #include "content/browser/renderer_host/render_view_host_impl.h"
13 #include "content/browser/renderer_host/render_widget_host_view_mac.h" 13 #include "content/browser/renderer_host/render_widget_host_view_mac.h"
14 #include "content/browser/renderer_host/webmenurunner_mac.h" 14 #include "content/browser/renderer_host/webmenurunner_mac.h"
15 #include "content/public/browser/notification_source.h" 15 #include "content/public/browser/notification_source.h"
16 #include "content/public/browser/notification_types.h" 16 #include "content/public/browser/notification_types.h"
17 #import "ui/base/cocoa/base_view.h" 17 #import "ui/base/cocoa/base_view.h"
18 18
19 namespace content { 19 namespace content {
20 20
(...skipping 21 matching lines...) Expand all
42 // Only single selection list boxes show a popup on Mac. 42 // Only single selection list boxes show a popup on Mac.
43 DCHECK(!allow_multiple_selection); 43 DCHECK(!allow_multiple_selection);
44 44
45 if (!g_allow_showing_popup_menus) 45 if (!g_allow_showing_popup_menus)
46 return; 46 return;
47 47
48 // Retain the Cocoa view for the duration of the pop-up so that it can't be 48 // Retain the Cocoa view for the duration of the pop-up so that it can't be
49 // dealloced if my Destroy() method is called while the pop-up's up (which 49 // dealloced if my Destroy() method is called while the pop-up's up (which
50 // would in turn delete me, causing a crash once the -runMenuInView 50 // would in turn delete me, causing a crash once the -runMenuInView
51 // call returns. That's what was happening in <http://crbug.com/33250>). 51 // call returns. That's what was happening in <http://crbug.com/33250>).
52 RenderWidgetHostViewMac* rwhvm = 52 RenderWidgetHostViewMac* rwhvm =
53 static_cast<RenderWidgetHostViewMac*>(GetRenderWidgetHostView()); 53 static_cast<RenderWidgetHostViewMac*>(GetRenderWidgetHostView());
54 scoped_nsobject<RenderWidgetHostViewCocoa> cocoa_view 54 base::scoped_nsobject<RenderWidgetHostViewCocoa> cocoa_view(
55 ([rwhvm->cocoa_view() retain]); 55 [rwhvm->cocoa_view() retain]);
56 56
57 // Display the menu. 57 // Display the menu.
58 scoped_nsobject<WebMenuRunner> menu_runner; 58 base::scoped_nsobject<WebMenuRunner> menu_runner;
59 menu_runner.reset([[WebMenuRunner alloc] initWithItems:items 59 menu_runner.reset([[WebMenuRunner alloc] initWithItems:items
60 fontSize:item_font_size 60 fontSize:item_font_size
61 rightAligned:right_aligned]); 61 rightAligned:right_aligned]);
62 62
63 { 63 {
64 // Make sure events can be pumped while the menu is up. 64 // Make sure events can be pumped while the menu is up.
65 base::MessageLoop::ScopedNestableTaskAllower allow( 65 base::MessageLoop::ScopedNestableTaskAllower allow(
66 base::MessageLoop::current()); 66 base::MessageLoop::current());
67 67
68 // One of the events that could be pumped is |window.close()|. 68 // One of the events that could be pumped is |window.close()|.
69 // User-initiated event-tracking loops protect against this by 69 // User-initiated event-tracking loops protect against this by
70 // setting flags in -[CrApplication sendEvent:], but since 70 // setting flags in -[CrApplication sendEvent:], but since
71 // web-content menus are initiated by IPC message the setup has to 71 // web-content menus are initiated by IPC message the setup has to
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 void PopupMenuHelper::Observe(int type, 104 void PopupMenuHelper::Observe(int type,
105 const NotificationSource& source, 105 const NotificationSource& source,
106 const NotificationDetails& details) { 106 const NotificationDetails& details) {
107 DCHECK(type == NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED); 107 DCHECK(type == NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED);
108 DCHECK(Source<RenderWidgetHost>(source).ptr() == render_view_host_); 108 DCHECK(Source<RenderWidgetHost>(source).ptr() == render_view_host_);
109 render_view_host_ = NULL; 109 render_view_host_ = NULL;
110 } 110 }
111 111
112 } // namespace content 112 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698