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

Side by Side Diff: third_party/WebKit/Source/core/page/ContextMenuController.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2010 Igalia S.L 3 * Copyright (C) 2010 Igalia S.L
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 21 matching lines...) Expand all
32 #include "core/events/MouseEvent.h" 32 #include "core/events/MouseEvent.h"
33 #include "core/events/RelatedEvent.h" 33 #include "core/events/RelatedEvent.h"
34 #include "core/frame/LocalFrame.h" 34 #include "core/frame/LocalFrame.h"
35 #include "core/html/HTMLMenuElement.h" 35 #include "core/html/HTMLMenuElement.h"
36 #include "core/input/EventHandler.h" 36 #include "core/input/EventHandler.h"
37 #include "core/page/ContextMenuClient.h" 37 #include "core/page/ContextMenuClient.h"
38 #include "core/page/ContextMenuProvider.h" 38 #include "core/page/ContextMenuProvider.h"
39 #include "core/page/CustomContextMenuProvider.h" 39 #include "core/page/CustomContextMenuProvider.h"
40 #include "platform/ContextMenu.h" 40 #include "platform/ContextMenu.h"
41 #include "platform/ContextMenuItem.h" 41 #include "platform/ContextMenuItem.h"
42 #include "wtf/PtrUtil.h"
43 #include <memory>
44 42
45 namespace blink { 43 namespace blink {
46 44
47 using namespace HTMLNames; 45 using namespace HTMLNames;
48 46
49 ContextMenuController::ContextMenuController(Page*, ContextMenuClient* client) 47 ContextMenuController::ContextMenuController(Page*, ContextMenuClient* client)
50 : m_client(client) 48 : m_client(client)
51 { 49 {
52 DCHECK(client); 50 DCHECK(client);
53 } 51 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 m_contextMenu = createContextMenu(frame, location); 137 m_contextMenu = createContextMenu(frame, location);
140 if (!m_contextMenu) { 138 if (!m_contextMenu) {
141 clearContextMenu(); 139 clearContextMenu();
142 return; 140 return;
143 } 141 }
144 142
145 m_menuProvider->populateContextMenu(m_contextMenu.get()); 143 m_menuProvider->populateContextMenu(m_contextMenu.get());
146 showContextMenu(nullptr); 144 showContextMenu(nullptr);
147 } 145 }
148 146
149 std::unique_ptr<ContextMenu> ContextMenuController::createContextMenu(Event* eve nt) 147 PassOwnPtr<ContextMenu> ContextMenuController::createContextMenu(Event* event)
150 { 148 {
151 ASSERT(event); 149 ASSERT(event);
152 150
153 if (!event->isMouseEvent()) 151 if (!event->isMouseEvent())
154 return nullptr; 152 return nullptr;
155 153
156 MouseEvent* mouseEvent = toMouseEvent(event); 154 MouseEvent* mouseEvent = toMouseEvent(event);
157 return createContextMenu(event->target()->toNode()->document().frame(), mous eEvent->absoluteLocation()); 155 return createContextMenu(event->target()->toNode()->document().frame(), mous eEvent->absoluteLocation());
158 } 156 }
159 157
160 std::unique_ptr<ContextMenu> ContextMenuController::createContextMenu(LocalFrame * frame, const LayoutPoint& location) 158 PassOwnPtr<ContextMenu> ContextMenuController::createContextMenu(LocalFrame* fra me, const LayoutPoint& location)
161 { 159 {
162 HitTestRequest::HitTestRequestType type = HitTestRequest::ReadOnly | HitTest Request::Active; 160 HitTestRequest::HitTestRequestType type = HitTestRequest::ReadOnly | HitTest Request::Active;
163 HitTestResult result(type, location); 161 HitTestResult result(type, location);
164 162
165 if (frame) 163 if (frame)
166 result = frame->eventHandler().hitTestResultAtPoint(location, type); 164 result = frame->eventHandler().hitTestResultAtPoint(location, type);
167 165
168 if (!result.innerNodeOrImageMapImage()) 166 if (!result.innerNodeOrImageMapImage())
169 return nullptr; 167 return nullptr;
170 168
171 m_hitTestResult = result; 169 m_hitTestResult = result;
172 170
173 return wrapUnique(new ContextMenu); 171 return adoptPtr(new ContextMenu);
174 } 172 }
175 173
176 void ContextMenuController::showContextMenu(Event* event) 174 void ContextMenuController::showContextMenu(Event* event)
177 { 175 {
178 bool fromTouch = false; 176 bool fromTouch = false;
179 if (event && event->isMouseEvent()) { 177 if (event && event->isMouseEvent()) {
180 MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); 178 MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
181 fromTouch = mouseEvent->fromTouch(); 179 fromTouch = mouseEvent->fromTouch();
182 } 180 }
183 181
184 if (m_client->showContextMenu(m_contextMenu.get(), fromTouch) && event) 182 if (m_client->showContextMenu(m_contextMenu.get(), fromTouch) && event)
185 event->setDefaultHandled(); 183 event->setDefaultHandled();
186 } 184 }
187 185
188 void ContextMenuController::contextMenuItemSelected(const ContextMenuItem* item) 186 void ContextMenuController::contextMenuItemSelected(const ContextMenuItem* item)
189 { 187 {
190 ASSERT(item->type() == ActionType || item->type() == CheckableActionType); 188 ASSERT(item->type() == ActionType || item->type() == CheckableActionType);
191 189
192 if (item->action() < ContextMenuItemBaseCustomTag || item->action() > Contex tMenuItemLastCustomTag) 190 if (item->action() < ContextMenuItemBaseCustomTag || item->action() > Contex tMenuItemLastCustomTag)
193 return; 191 return;
194 192
195 ASSERT(m_menuProvider); 193 ASSERT(m_menuProvider);
196 m_menuProvider->contextMenuItemSelected(item); 194 m_menuProvider->contextMenuItemSelected(item);
197 } 195 }
198 196
199 } // namespace blink 197 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698