gfx/skia/trunk/include/views/SkEventSink.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     2 /*
     3  * Copyright 2006 The Android Open Source Project
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
    10 #ifndef SkEventSink_DEFINED
    11 #define SkEventSink_DEFINED
    13 #include "SkRefCnt.h"
    14 #include "SkEvent.h"
    16 struct SkTagList;
    18 /** \class SkEventSink
    20     SkEventSink is the base class for all objects that receive SkEvents.
    21 */
    22 class SkEventSink : public SkRefCnt {
    23 public:
    24     SK_DECLARE_INST_COUNT(SkEventSink)
    26              SkEventSink();
    27     virtual ~SkEventSink();
    29     /**
    30      *  Returns this eventsink's unique ID. Use this to post SkEvents to
    31      *  this eventsink.
    32      */
    33     SkEventSinkID getSinkID() const { return fID; }
    35     /**
    36      *  Call this to pass an event to this object for processing. Returns true if the
    37      *  event was handled.
    38      */
    39     bool doEvent(const SkEvent&);
    41     /** Returns true if the sink (or one of its subclasses) understands the event as a query.
    42         If so, the sink may modify the event to communicate its "answer".
    43     */
    44     bool doQuery(SkEvent* query);
    46     /**
    47      *  Add sinkID to the list of listeners, to receive events from calls to sendToListeners()
    48      *  and postToListeners(). If sinkID already exists in the listener list, no change is made.
    49      */
    50     void addListenerID(SkEventSinkID sinkID);
    52     /**
    53      *  Copy listeners from one event sink to another, typically from parent to child.
    54      *  @param from the event sink to copy the listeners from
    55      */
    56     void copyListeners(const SkEventSink& from);
    58     /**
    59      *  Remove sinkID from the list of listeners. If sinkID does not appear in the list,
    60      *  no change is made.
    61      */
    62     void removeListenerID(SkEventSinkID);
    64     /**
    65      *  Returns true if there are 1 or more listeners attached to this eventsink
    66      */
    67     bool hasListeners() const;
    69     /**
    70      *  Posts a copy of evt to each of the eventsinks in the lisener list.
    71      *  This ignores the targetID and target proc in evt.
    72      */
    73     void postToListeners(const SkEvent& evt, SkMSec delay = 0);
    75     enum EventResult {
    76         kHandled_EventResult,       //!< the eventsink returned true from its doEvent method
    77         kNotHandled_EventResult,    //!< the eventsink returned false from its doEvent method
    78         kSinkNotFound_EventResult   //!< no matching eventsink was found for the event's getSink().
    79     };
    81     /**
    82      *  DoEvent handles dispatching the event to its target ID or proc.
    83      */
    84     static EventResult DoEvent(const SkEvent&);
    86     /**
    87      *  Returns the matching eventsink, or null if not found
    88      */
    89     static SkEventSink* FindSink(SkEventSinkID);
    91 protected:
    92     /** Override this to handle events in your subclass. Be sure to call the inherited version
    93         for events that you don't handle.
    94     */
    95     virtual bool onEvent(const SkEvent&);
    96     virtual bool onQuery(SkEvent*);
    98     SkTagList*  findTagList(U8CPU tag) const;
    99     void        addTagList(SkTagList*);
   100     void        removeTagList(U8CPU tag);
   102 private:
   103     SkEventSinkID   fID;
   104     SkTagList*      fTagHead;
   106     // for our private link-list
   107     SkEventSink*    fNextSink;
   109     typedef SkRefCnt INHERITED;
   110 };
   112 #endif

mercurial