| OLD | NEW |
| 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 ContextMenuController::ContextMenuController(Page*, ContextMenuClient* client) | 47 ContextMenuController::ContextMenuController(Page*, ContextMenuClient* client) |
| 48 : m_client(client) | 48 : m_client(client) |
| 49 { | 49 { |
| 50 DCHECK(client); | 50 DCHECK(client); |
| 51 } | 51 } |
| 52 | 52 |
| 53 ContextMenuController::~ContextMenuController() | 53 ContextMenuController::~ContextMenuController() |
| 54 { | 54 { |
| 55 } | 55 } |
| 56 | 56 |
| 57 PassOwnPtrWillBeRawPtr<ContextMenuController> ContextMenuController::create(Page
* page, ContextMenuClient* client) | 57 RawPtr<ContextMenuController> ContextMenuController::create(Page* page, ContextM
enuClient* client) |
| 58 { | 58 { |
| 59 return adoptPtrWillBeNoop(new ContextMenuController(page, client)); | 59 return new ContextMenuController(page, client); |
| 60 } | 60 } |
| 61 | 61 |
| 62 DEFINE_TRACE(ContextMenuController) | 62 DEFINE_TRACE(ContextMenuController) |
| 63 { | 63 { |
| 64 visitor->trace(m_menuProvider); | 64 visitor->trace(m_menuProvider); |
| 65 visitor->trace(m_hitTestResult); | 65 visitor->trace(m_hitTestResult); |
| 66 } | 66 } |
| 67 | 67 |
| 68 void ContextMenuController::clearContextMenu() | 68 void ContextMenuController::clearContextMenu() |
| 69 { | 69 { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 87 void ContextMenuController::populateCustomContextMenu(const Event& event) | 87 void ContextMenuController::populateCustomContextMenu(const Event& event) |
| 88 { | 88 { |
| 89 if (!RuntimeEnabledFeatures::contextMenuEnabled()) | 89 if (!RuntimeEnabledFeatures::contextMenuEnabled()) |
| 90 return; | 90 return; |
| 91 | 91 |
| 92 Node* node = event.target()->toNode(); | 92 Node* node = event.target()->toNode(); |
| 93 if (!node || !node->isHTMLElement()) | 93 if (!node || !node->isHTMLElement()) |
| 94 return; | 94 return; |
| 95 | 95 |
| 96 HTMLElement& element = toHTMLElement(*node); | 96 HTMLElement& element = toHTMLElement(*node); |
| 97 RefPtrWillBeRawPtr<HTMLMenuElement> menuElement = element.assignedContextMen
u(); | 97 RawPtr<HTMLMenuElement> menuElement = element.assignedContextMenu(); |
| 98 if (!menuElement || !equalIgnoringCase(menuElement->fastGetAttribute(typeAtt
r), "context")) | 98 if (!menuElement || !equalIgnoringCase(menuElement->fastGetAttribute(typeAtt
r), "context")) |
| 99 return; | 99 return; |
| 100 RefPtrWillBeRawPtr<RelatedEvent> relatedEvent = RelatedEvent::create(EventTy
peNames::show, true, true, node); | 100 RawPtr<RelatedEvent> relatedEvent = RelatedEvent::create(EventTypeNames::sho
w, true, true, node); |
| 101 if (menuElement->dispatchEvent(relatedEvent.release()) != DispatchEventResul
t::NotCanceled) | 101 if (menuElement->dispatchEvent(relatedEvent.release()) != DispatchEventResul
t::NotCanceled) |
| 102 return; | 102 return; |
| 103 if (menuElement != element.assignedContextMenu()) | 103 if (menuElement != element.assignedContextMenu()) |
| 104 return; | 104 return; |
| 105 m_menuProvider = CustomContextMenuProvider::create(*menuElement, element); | 105 m_menuProvider = CustomContextMenuProvider::create(*menuElement, element); |
| 106 m_menuProvider->populateContextMenu(m_contextMenu.get()); | 106 m_menuProvider->populateContextMenu(m_contextMenu.get()); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void ContextMenuController::handleContextMenuEvent(Event* event) | 109 void ContextMenuController::handleContextMenuEvent(Event* event) |
| 110 { | 110 { |
| 111 m_contextMenu = createContextMenu(event); | 111 m_contextMenu = createContextMenu(event); |
| 112 if (!m_contextMenu) | 112 if (!m_contextMenu) |
| 113 return; | 113 return; |
| 114 populateCustomContextMenu(*event); | 114 populateCustomContextMenu(*event); |
| 115 showContextMenu(event); | 115 showContextMenu(event); |
| 116 } | 116 } |
| 117 | 117 |
| 118 void ContextMenuController::showContextMenu(Event* event, PassRefPtrWillBeRawPtr
<ContextMenuProvider> menuProvider) | 118 void ContextMenuController::showContextMenu(Event* event, RawPtr<ContextMenuProv
ider> menuProvider) |
| 119 { | 119 { |
| 120 m_menuProvider = menuProvider; | 120 m_menuProvider = menuProvider; |
| 121 | 121 |
| 122 m_contextMenu = createContextMenu(event); | 122 m_contextMenu = createContextMenu(event); |
| 123 if (!m_contextMenu) { | 123 if (!m_contextMenu) { |
| 124 clearContextMenu(); | 124 clearContextMenu(); |
| 125 return; | 125 return; |
| 126 } | 126 } |
| 127 | 127 |
| 128 m_menuProvider->populateContextMenu(m_contextMenu.get()); | 128 m_menuProvider->populateContextMenu(m_contextMenu.get()); |
| 129 showContextMenu(event); | 129 showContextMenu(event); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void ContextMenuController::showContextMenuAtPoint(LocalFrame* frame, float x, f
loat y, PassRefPtrWillBeRawPtr<ContextMenuProvider> menuProvider) | 132 void ContextMenuController::showContextMenuAtPoint(LocalFrame* frame, float x, f
loat y, RawPtr<ContextMenuProvider> menuProvider) |
| 133 { | 133 { |
| 134 m_menuProvider = menuProvider; | 134 m_menuProvider = menuProvider; |
| 135 | 135 |
| 136 LayoutPoint location(x, y); | 136 LayoutPoint location(x, y); |
| 137 m_contextMenu = createContextMenu(frame, location); | 137 m_contextMenu = createContextMenu(frame, location); |
| 138 if (!m_contextMenu) { | 138 if (!m_contextMenu) { |
| 139 clearContextMenu(); | 139 clearContextMenu(); |
| 140 return; | 140 return; |
| 141 } | 141 } |
| 142 | 142 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 ASSERT(item->type() == ActionType || item->type() == CheckableActionType); | 183 ASSERT(item->type() == ActionType || item->type() == CheckableActionType); |
| 184 | 184 |
| 185 if (item->action() < ContextMenuItemBaseCustomTag || item->action() > Contex
tMenuItemLastCustomTag) | 185 if (item->action() < ContextMenuItemBaseCustomTag || item->action() > Contex
tMenuItemLastCustomTag) |
| 186 return; | 186 return; |
| 187 | 187 |
| 188 ASSERT(m_menuProvider); | 188 ASSERT(m_menuProvider); |
| 189 m_menuProvider->contextMenuItemSelected(item); | 189 m_menuProvider->contextMenuItemSelected(item); |
| 190 } | 190 } |
| 191 | 191 |
| 192 } // namespace blink | 192 } // namespace blink |
| OLD | NEW |