18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 13f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ContextMenu.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if USE(CROSS_PLATFORM_CONTEXT_MENUS) 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochContextMenu::ContextMenu() 345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 36e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 37f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic const ContextMenuItem* findItemWithAction(unsigned action, const Vector<ContextMenuItem>& items) 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 39f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch for (size_t i = 0; i < items.size(); ++i) { 40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const ContextMenuItem& item = items[i]; 41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (item.action() == action) 42f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return &item; 43f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (item.type() != SubmenuType) 44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch continue; 45f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (const ContextMenuItem* subMenuItem = findItemWithAction(action, item.subMenuItems())) 46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return subMenuItem; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 48bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return 0; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 52f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochContextMenuItem* ContextMenu::itemWithAction(unsigned action) 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // FIXME: When more platforms switch over, this fucntion should return a const ContextMenuItem*'s, and the const_cast 55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch // won't be needed anymore. 56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return const_cast<ContextMenuItem*>(findItemWithAction(action, m_items)); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} // namespace WebCore 60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif // USE(CROSS_PLATFORM_CONTEXT_MENUS) 62