summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/nav/CachedNode.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/android/nav/CachedNode.h')
-rw-r--r--Source/WebKit/android/nav/CachedNode.h245
1 files changed, 0 insertions, 245 deletions
diff --git a/Source/WebKit/android/nav/CachedNode.h b/Source/WebKit/android/nav/CachedNode.h
deleted file mode 100644
index 321b7fd..0000000
--- a/Source/WebKit/android/nav/CachedNode.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright 2007, The Android Open Source Project
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef CachedNode_h
-#define CachedNode_h
-
-#include "CachedDebug.h"
-#include "CachedNodeType.h"
-#include "IntRect.h"
-#include "PlatformString.h"
-
-#include <wtf/Vector.h>
-#include <wtf/text/AtomicString.h>
-
-class SkPicture;
-
-namespace WebCore {
- class Node;
-}
-
-namespace android {
-
-class CachedFrame;
-class CachedRoot;
-
-class CachedNode {
-public:
-// Nodes are rejected because either they are spacially not the best (first set)
-// or because they have the wrong DOM attribute (in focus, a focused child, etc)
-// findClosest() gives only spacially rejected nodes a second chance
- enum Condition { // if bigger than 32, increase bitfield size below
- // rejections that get a second chance
- NOT_REJECTED = 0,
- SECOND_CHANCE_START = NOT_REJECTED, // must be first in list
- BUTTED_UP,
- CENTER_FURTHER,
- CLOSER,
- CLOSER_IN_CURSOR,
- CLOSER_OVERLAP,
- CLOSER_TOP,
- NAVABLE,
- FURTHER,
- IN_UMBRA,
- IN_WORKING,
- LEFTMOST,
- NOT_ENCLOSING_CURSOR,
- OVERLAP_OR_EDGE_FURTHER,
- PREFERRED, // better overlap measure
- SECOND_CHANCE_END = PREFERRED, // must be last in list
- // rejections that don't get a second chance
- ANCHOR_IN_ANCHOR,
- BEST_DIRECTION, // can be reached by another direction
- CHILD,
- DISABLED,
- HIGHER_TAB_INDEX,
- IN_CURSOR,
- IN_CURSOR_CHILDREN,
- NOT_CURSOR_NODE,
- OUTSIDE_OF_BEST, // containership
- OUTSIDE_OF_ORIGINAL, // containership
- UNDER_LAYER,
- CONDITION_SIZE // FIXME: test that CONDITION_SIZE fits in mCondition
- };
- CachedNode() {
- // The node is initiaized to 0 in its array, so nothing to do in the
- // constructor
- }
-
- WebCore::IntRect bounds(const CachedFrame* ) const;
- int childFrameIndex() const { return isFrame() ? mDataIndex : -1; }
- void clearCondition() const { mCondition = NOT_REJECTED; }
- void clearCursor(CachedFrame* );
- static bool Clip(const WebCore::IntRect& outer, WebCore::IntRect* inner,
- WTF::Vector<WebCore::IntRect>* rings);
- bool clip(const WebCore::IntRect& );
- bool clippedOut() { return mClippedOut; }
- int colorIndex() const { return mColorIndex; }
- WebCore::IntRect cursorRingBounds(const CachedFrame* ) const;
- void cursorRings(const CachedFrame* , WTF::Vector<WebCore::IntRect>* ) const;
- bool disabled() const { return mDisabled; }
- const CachedNode* document() const { return &this[-mIndex]; }
- void fixUpCursorRects(const CachedFrame* frame);
- const WTF::String& getExport() const { return mExport; }
- bool hasCursorRing() const { return mHasCursorRing; }
- bool hasMouseOver() const { return mHasMouseOver; }
- void hideCursor(CachedFrame* );
- WebCore::IntRect hitBounds(const CachedFrame* ) const;
- int index() const { return mIndex; }
- void init(WebCore::Node* node);
- bool isAnchor() const { return mType == ANCHOR_CACHEDNODETYPE; }
- bool isContentEditable() const { return mType == CONTENT_EDITABLE_CACHEDNODETYPE; }
- bool isCursor() const { return mIsCursor; }
- bool isArea() const { return mType == AREA_CACHEDNODETYPE; }
- bool isFocus() const { return mIsFocus; }
- bool isFrame() const { return mType == FRAME_CACHEDNODETYPE; }
- bool isHidden() const { return mIsHidden; }
- bool isInLayer() const { return mIsInLayer; }
- bool isNavable(const CachedFrame* frame, const WebCore::IntRect& clip) const {
- return clip.intersects(bounds(frame));
- }
- bool isPlugin() const { return mType == PLUGIN_CACHEDNODETYPE; }
- bool isSelect() const { return mType == SELECT_CACHEDNODETYPE; }
- bool isSyntheticLink() const {
- return mType >= ADDRESS_CACHEDNODETYPE && mType <= PHONE_CACHEDNODETYPE;
- }
- bool isTextField(const CachedFrame*) const;
- bool isTextInput() const { return mType == TEXT_INPUT_CACHEDNODETYPE; }
- bool isTransparent() const { return mIsTransparent; }
- bool isUnclipped() const { return mIsUnclipped; }
- // localXXX functions are used only for drawing cursor rings
- WebCore::IntRect localBounds(const CachedFrame* ) const;
- void localCursorRings(const CachedFrame* ,
- WTF::Vector<WebCore::IntRect>* ) const;
- WebCore::IntRect localHitBounds(const CachedFrame* ) const;
- WebCore::IntRect localRing(const CachedFrame* , size_t part) const;
- void move(int x, int y);
- int navableRects() const { return mCursorRing.size(); }
- void* nodePointer() const { return mNode; }
- bool noSecondChance() const { return mCondition > SECOND_CHANCE_END; }
- const WebCore::IntRect& originalAbsoluteBounds() const {
- return mOriginalAbsoluteBounds; }
- const CachedNode* parent() const { return document() + mParentIndex; }
- void* parentGroup() const { return mParentGroup; }
- int parentIndex() const { return mParentIndex; }
- bool partRectsContains(const CachedNode* other) const;
- const WebCore::IntRect& rawBounds() const { return mBounds; }
- void reset();
- WebCore::IntRect ring(const CachedFrame* , size_t part) const;
- const WTF::Vector<WebCore::IntRect>& rings() const { return mCursorRing; }
- void setBounds(const WebCore::IntRect& bounds) { mBounds = bounds; }
- void setClippedOut(bool clipped) { mClippedOut = clipped; }
- void setColorIndex(int index) { mColorIndex = index; }
- void setCondition(Condition condition) const { mCondition = condition; }
- void setDataIndex(int index) { mDataIndex = index; }
- void setDisabled(bool disabled) { mDisabled = disabled; }
- void setExport(const WTF::String& exported) { mExport = exported; }
- void setHasCursorRing(bool hasRing) { mHasCursorRing = hasRing; }
- void setHasMouseOver(bool hasMouseOver) { mHasMouseOver = hasMouseOver; }
- void setHitBounds(const WebCore::IntRect& bounds) { mHitBounds = bounds; }
- void setOriginalAbsoluteBounds(const WebCore::IntRect& bounds) {
- mOriginalAbsoluteBounds = bounds; }
- void setIndex(int index) { mIndex = index; }
- void setIsCursor(bool isCursor) { mIsCursor = isCursor; }
- void setIsFocus(bool isFocus) { mIsFocus = isFocus; }
- void setIsInLayer(bool isInLayer) { mIsInLayer = isInLayer; }
- void setIsParentAnchor(bool isAnchor) { mIsParentAnchor = isAnchor; }
- void setIsTransparent(bool isTransparent) { mIsTransparent = isTransparent; }
- void setIsUnclipped(bool unclipped) { mIsUnclipped = unclipped; }
- void setLast() { mLast = true; }
- void setParentGroup(void* group) { mParentGroup = group; }
- void setParentIndex(int parent) { mParentIndex = parent; }
- void setSingleImage(bool single) { mSingleImage = single; }
- void setTabIndex(int index) { mTabIndex = index; }
- void setType(CachedNodeType type) { mType = type; }
- void show() { mIsHidden = false; }
- bool singleImage() const { return mSingleImage; }
- int tabIndex() const { return mTabIndex; }
- int textInputIndex() const { return isTextInput() ? mDataIndex : -1; }
- const CachedNode* traverseNextNode() const { return mLast ? NULL : &this[1]; }
- bool useBounds() const { return mUseBounds; }
- bool useHitBounds() const { return mUseHitBounds; }
- bool wantsKeyEvents() const { return isTextInput() || isPlugin()
- || isContentEditable() || isFrame(); }
-private:
- friend class CacheBuilder;
- WTF::String mExport;
- WebCore::IntRect mBounds;
- WebCore::IntRect mHitBounds;
- WebCore::IntRect mOriginalAbsoluteBounds;
- WTF::Vector<WebCore::IntRect> mCursorRing;
- void* mNode; // WebCore::Node*, only used to match pointers
- void* mParentGroup; // WebCore::Node*, only used to match pointers
- int mDataIndex; // child frame if a frame; input data index; or -1
- int mIndex; // index of itself, to find first in array (document)
- int mParentIndex;
- int mTabIndex;
- int mColorIndex; // index to ring color and other stylable properties
- mutable Condition mCondition : 5; // why the node was not chosen on the first pass
- CachedNodeType mType : 4;
- bool mClippedOut : 1;
- bool mDisabled : 1;
- bool mFixedUpCursorRects : 1;
- bool mHasCursorRing : 1;
- bool mHasMouseOver : 1;
- bool mIsCursor : 1;
- bool mIsFocus : 1;
- bool mIsHidden : 1;
- bool mIsInLayer : 1;
- bool mIsParentAnchor : 1;
- bool mIsTransparent : 1;
- bool mIsUnclipped : 1;
- bool mLast : 1; // true if this is the last node in a group
- bool mSingleImage : 1;
- bool mUseBounds : 1;
- bool mUseHitBounds : 1;
-#ifdef BROWSER_DEBUG
-public:
- WebCore::Node* webCoreNode() const { return (WebCore::Node*) mNode; }
- bool mDisplayMeasure;
- mutable bool mInCompare;
- int mSideDistance;
- int mSecondSide;
-#endif
-#if DEBUG_NAV_UI || DUMP_NAV_CACHE
-public:
- class Debug {
-public:
- CachedNode* base() const;
- const char* condition(Condition t) const;
- void print() const;
- const char* type(CachedNodeType t) const;
-#if DUMP_NAV_CACHE
- int mNodeIndex;
- int mParentGroupIndex;
-#endif
- } mDebug;
- friend class CachedNode::Debug;
-#endif
-};
-
-}
-
-#endif