18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006, 2007 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 * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ContextMenuController_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ContextMenuController_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "HitTestResult.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Noncopyable.h> 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/OwnPtr.h> 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/PassRefPtr.h> 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/RefPtr.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ContextMenu; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ContextMenuClient; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ContextMenuItem; 40d0825bca7fe65beaee391d30da42e937db621564Steve Block class ContextMenuProvider; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Event; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Page; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 44ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch class ContextMenuController { 45ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(ContextMenuController); WTF_MAKE_FAST_ALLOCATED; 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ContextMenuController(Page*, ContextMenuClient*); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~ContextMenuController(); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ContextMenuClient* client() const { return m_client; } 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ContextMenu* contextMenu() const { return m_contextMenu.get(); } 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearContextMenu(); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void handleContextMenuEvent(Event*); 56d0825bca7fe65beaee391d30da42e937db621564Steve Block void showContextMenu(Event*, PassRefPtr<ContextMenuProvider>); 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void populate(); 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void contextMenuItemSelected(ContextMenuItem*); 60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void addInspectElementItem(); 61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 62f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void checkOrEnableIfNeeded(ContextMenuItem&) const; 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 64f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void setHitTestResult(const HitTestResult& result) { m_hitTestResult = result; } 65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const HitTestResult& hitTestResult() { return m_hitTestResult; } 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch PassOwnPtr<ContextMenu> createContextMenu(Event*); 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void showContextMenu(Event*); 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void appendItem(ContextMenuItem&, ContextMenu* parentMenu); 72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendFontSubMenu(ContextMenuItem&); 74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendSpellingAndGrammarSubMenu(ContextMenuItem&); 75f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendSpellingSubMenu(ContextMenuItem&); 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendSpeechSubMenu(ContextMenuItem& ); 77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendWritingDirectionSubMenu(ContextMenuItem&); 78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendTextDirectionSubMenu(ContextMenuItem&); 79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendSubstitutionsSubMenu(ContextMenuItem&); 80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void createAndAppendTransformationsSubMenu(ContextMenuItem&); 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* m_page; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ContextMenuClient* m_client; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OwnPtr<ContextMenu> m_contextMenu; 85d0825bca7fe65beaee391d30da42e937db621564Steve Block RefPtr<ContextMenuProvider> m_menuProvider; 86f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch HitTestResult m_hitTestResult; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 92