AccessibilityEvent.java revision 75986cf9bc57ef11ad70f36fb77fbbf5d63af6ec
175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov/*
275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Copyright (C) 2009 The Android Open Source Project
375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Licensed under the Apache License, Version 2.0 (the "License");
575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * you may not use this file except in compliance with the License.
675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * You may obtain a copy of the License at
775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *      http://www.apache.org/licenses/LICENSE-2.0
975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
1075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Unless required by applicable law or agreed to in writing, software
1175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * distributed under the License is distributed on an "AS IS" BASIS,
1275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * See the License for the specific language governing permissions and
1475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * limitations under the License.
1575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov */
1675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
1775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovpackage android.view.accessibility;
1875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
1975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport android.os.Parcel;
2075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport android.os.Parcelable;
2175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport android.text.TextUtils;
2275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
2375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport java.util.ArrayList;
2475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport java.util.List;
2575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
2675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov/**
2775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * This class represents accessibility events that are sent by the system when
2875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * something notable happens in the user interface. For example, when a
2975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.widget.Button} is clicked, a {@link android.view.View} is focused, etc.
3075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
3175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * This class represents various semantically different accessibility event
3275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * types. Each event type has associated a set of related properties. In other
3375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * words, each event type is characterized via a subset of the properties exposed
3475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * by this class. For each event type there is a corresponding constant defined
3575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * in this class. Since some event types are semantically close there are mask
3675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * constants that group them together. Follows a specification of the event
3775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * types and their associated properties:
3875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
3975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>VIEW TYPES</b> <br>
4075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
4175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>View clicked</b> - represents the event of clicking on a {@link android.view.View}
4275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * like {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc. <br>
4375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type:{@link #TYPE_VIEW_CLICKED} <br>
4475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
4575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
4675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
4775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
4875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()},
4975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isChecked()},
5075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isEnabled()},
5175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isPassword()},
5275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getItemCount()},
5375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getCurrentItemIndex()}
5475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
5575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>View long clicked</b> - represents the event of long clicking on a {@link android.view.View}
5675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * like {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc. <br>
5775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type:{@link #TYPE_VIEW_LONG_CLICKED} <br>
5875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
5975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
6075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
6175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
6275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()},
6375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isChecked()},
6475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isEnabled()},
6575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isPassword()},
6675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getItemCount()},
6775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getCurrentItemIndex()}
6875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
6975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>View selected</b> - represents the event of selecting an item usually in
7075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * the context of an {@link android.widget.AdapterView}. <br>
7175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type: {@link #TYPE_VIEW_SELECTED} <br>
7275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
7375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
7475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
7575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
7675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()},
7775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isChecked()},
7875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isEnabled()},
7975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isPassword()},
8075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getItemCount()},
8175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getCurrentItemIndex()}
8275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
8375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>View focused</b> - represents the event of focusing a
8475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.view.View}. <br>
8575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type: {@link #TYPE_VIEW_FOCUSED} <br>
8675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
8775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
8875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
8975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
9075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()},
9175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isChecked()},
9275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isEnabled()},
9375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isPassword()},
9475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getItemCount()},
9575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getCurrentItemIndex()}
9675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
9775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>View text changed</b> - represents the event of changing the text of an
9875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.widget.EditText}. <br>
9975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type: {@link #TYPE_VIEW_TEXT_CHANGED} <br>
10075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
10175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
10275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
10375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
10475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()},
10575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isChecked()},
10675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isEnabled()},
10775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #isPassword()},
10875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getItemCount()},
10975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getCurrentItemIndex()},
11075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getFromIndex()},
11175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getAddedCount()},
11275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getRemovedCount()},
11375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getBeforeText()}
11475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
11575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>TRANSITION TYPES</b> <br>
11675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
11775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>Window state changed</b> - represents the event of opening/closing a
11875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.widget.PopupWindow}, {@link android.view.Menu},
11975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.app.Dialog}, etc. <br>
12075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type: {@link #TYPE_WINDOW_STATE_CHANGED} <br>
12175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
12275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
12375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
12475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
12575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()}
12675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
12775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>NOTIFICATION TYPES</b> <br>
12875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
12975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>Notification state changed</b> - represents the event showing/hiding
13075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link android.app.Notification}.
13175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Type: {@link #TYPE_NOTIFICATION_STATE_CHANGED} <br>
13275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Properties:
13375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getClassName()},
13475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getPackageName()},
13575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getEventTime()},
13675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getText()}
13775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * {@link #getParcelableData()}
13875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
13975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <b>Security note</b>
14075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * <p>
14175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Since an event contains the text of its source privacy can be compromised by leaking of
14275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * sensitive information such as passwords. To address this issue any event fired in response
14375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * to manipulation of a PASSWORD field does NOT CONTAIN the text of the password.
14475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
14575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * @see android.view.accessibility.AccessibilityManager
14675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * @see android.accessibilityservice.AccessibilityService
14775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov */
14875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovpublic final class AccessibilityEvent implements Parcelable {
14975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
15075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
15175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Invalid selection/focus position.
15275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
15375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #getCurrentItemIndex()
15475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
15575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int INVALID_POSITION = -1;
15675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
15775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
15875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Maximum length of the text fields.
15975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
16075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #getBeforeText()
16175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #getText()
16275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
16375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int MAX_TEXT_LENGTH = 500;
16475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
16575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
16675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of clicking on a {@link android.view.View} like
16775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
16875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
16975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_VIEW_CLICKED = 0x00000001;
17075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
17175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
17275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of long clicking on a {@link android.view.View} like
17375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
17475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
17575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_VIEW_LONG_CLICKED = 0x00000002;
17675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
17775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
17875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of selecting an item usually in the context of an
17975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.widget.AdapterView}.
18075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
18175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_VIEW_SELECTED = 0x00000004;
18275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
18375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
18475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of focusing a {@link android.view.View}.
18575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
18675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_VIEW_FOCUSED = 0x00000008;
18775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
18875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
18975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of changing the text of an {@link android.widget.EditText}.
19075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
19175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_VIEW_TEXT_CHANGED = 0x00000010;
19275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
19375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
19475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event of opening/closing a {@link android.widget.PopupWindow},
19575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * {@link android.view.Menu}, {@link android.app.Dialog}, etc.
19675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
19775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_WINDOW_STATE_CHANGED = 0x00000020;
19875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
19975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
20075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Represents the event showing/hiding a {@link android.app.Notification}.
20175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
20275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPE_NOTIFICATION_STATE_CHANGED = 0x00000040;
20375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
20475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
20575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Mask for {@link AccessibilityEvent} all types.
20675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
20775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_VIEW_CLICKED
20875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_VIEW_LONG_CLICKED
20975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_VIEW_SELECTED
21075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_VIEW_FOCUSED
21175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_VIEW_TEXT_CHANGED
21275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_WINDOW_STATE_CHANGED
21375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see #TYPE_NOTIFICATION_STATE_CHANGED
21475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
21575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final int TYPES_ALL_MASK = 0xFFFFFFFF;
21675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
21775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final int MAX_POOL_SIZE = 2;
21875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final Object mPoolLock = new Object();
21975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static AccessibilityEvent sPool;
22075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static int sPoolSize;
22175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
22275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final int CHECKED = 0x00000001;
22375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final int ENABLED = 0x00000002;
22475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final int PASSWORD = 0x00000004;
22575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private static final int FULL_SCREEN = 0x00000080;
22675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
22775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private AccessibilityEvent mNext;
22875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
22975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mEventType;
23075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mBooleanProperties;
23175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mCurrentItemIndex;
23275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mItemCount;
23375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mFromIndex;
23475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mAddedCount;
23575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private int mRemovedCount;
23675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
23775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private long mEventTime;
23875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
23975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private CharSequence mClassName;
24075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private CharSequence mPackageName;
24175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private CharSequence mContentDescription;
24275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private CharSequence mBeforeText;
24375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
24475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private Parcelable mParcelableData;
24575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
24675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private final List<CharSequence> mText = new ArrayList<CharSequence>();
24775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
24875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private boolean mIsInPool;
24975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
25075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /*
25175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Hide constructor from clients.
25275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
25375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private AccessibilityEvent() {
25475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mCurrentItemIndex = INVALID_POSITION;
25575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
25675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
25775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
25875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets if the source is checked.
25975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
26075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return True if the view is checked, false otherwise.
26175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
26275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public boolean isChecked() {
26375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return getBooleanProperty(CHECKED);
26475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
26575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
26675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
26775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets if the source is checked.
26875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
26975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param isChecked True if the view is checked, false otherwise.
27075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
27175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setChecked(boolean isChecked) {
27275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        setBooleanProperty(CHECKED, isChecked);
27375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
27475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
27575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
27675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets if the source is enabled.
27775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
27875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return True if the view is enabled, false otherwise.
27975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
28075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public boolean isEnabled() {
28175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return getBooleanProperty(ENABLED);
28275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
28375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
28475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
28575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets if the source is enabled.
28675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
28775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param isEnabled True if the view is enabled, false otherwise.
28875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
28975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setEnabled(boolean isEnabled) {
29075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        setBooleanProperty(ENABLED, isEnabled);
29175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
29275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
29375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
29475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets if the source is a password field.
29575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
29675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return True if the view is a password field, false otherwise.
29775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
29875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public boolean isPassword() {
29975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return getBooleanProperty(PASSWORD);
30075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
30175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
30275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
30375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets if the source is a password field.
30475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
30575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param isPassword True if the view is a password field, false otherwise.
30675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
30775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setPassword(boolean isPassword) {
30875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        setBooleanProperty(PASSWORD, isPassword);
30975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
31075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
31175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
31275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets if the source is taking the entire screen.
31375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
31475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param isFullScreen True if the source is full screen, false otherwise.
31575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
31675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setFullScreen(boolean isFullScreen) {
31775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        setBooleanProperty(FULL_SCREEN, isFullScreen);
31875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
31975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
32075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
32175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets if the source is taking the entire screen.
32275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
32375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return True if the source is full screen, false otherwise.
32475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
32575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public boolean isFullScreen() {
32675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return getBooleanProperty(FULL_SCREEN);
32775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
32875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
32975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
33075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the event type.
33175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
33275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The event type.
33375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
33475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getEventType() {
33575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mEventType;
33675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
33775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
33875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
33975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the event type.
34075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
34175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param eventType The event type.
34275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
34375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setEventType(int eventType) {
34475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventType = eventType;
34575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
34675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
34775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
34875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the number of items that can be visited.
34975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
35075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The number of items.
35175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
35275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getItemCount() {
35375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mItemCount;
35475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
35575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
35675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
35775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the number of items that can be visited.
35875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
35975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param itemCount The number of items.
36075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
36175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setItemCount(int itemCount) {
36275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mItemCount = itemCount;
36375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
36475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
36575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
36675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the index of the source in the list of items the can be visited.
36775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
36875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The current item index.
36975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
37075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getCurrentItemIndex() {
37175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mCurrentItemIndex;
37275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
37375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
37475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
37575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the index of the source in the list of items that can be visited.
37675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
37775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param currentItemIndex The current item index.
37875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
37975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setCurrentItemIndex(int currentItemIndex) {
38075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mCurrentItemIndex = currentItemIndex;
38175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
38275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
38375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
38475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the index of the first character of the changed sequence.
38575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
38675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The index of the first character.
38775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
38875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getFromIndex() {
38975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mFromIndex;
39075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
39175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
39275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
39375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the index of the first character of the changed sequence.
39475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
39575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param fromIndex The index of the first character.
39675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
39775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setFromIndex(int fromIndex) {
39875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mFromIndex = fromIndex;
39975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
40075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
40175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
40275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the number of added characters.
40375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
40475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The number of added characters.
40575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
40675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getAddedCount() {
40775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mAddedCount;
40875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
40975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
41075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
41175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the number of added characters.
41275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
41375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param addedCount The number of added characters.
41475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
41575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setAddedCount(int addedCount) {
41675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mAddedCount = addedCount;
41775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
41875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
41975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
42075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the number of removed characters.
42175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
42275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The number of removed characters.
42375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
42475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int getRemovedCount() {
42575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mRemovedCount;
42675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
42775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
42875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
42975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the number of removed characters.
43075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
43175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param removedCount The number of removed characters.
43275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
43375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setRemovedCount(int removedCount) {
43475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mRemovedCount = removedCount;
43575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
43675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
43775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
43875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the time in which this event was sent.
43975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
44075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The event time.
44175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
44275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public long getEventTime() {
44375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mEventTime;
44475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
44575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
44675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
44775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the time in which this event was sent.
44875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
44975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param eventTime The event time.
45075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
45175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setEventTime(long eventTime) {
45275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventTime = eventTime;
45375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
45475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
45575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
45675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the class name of the source.
45775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
45875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The class name.
45975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
46075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public CharSequence getClassName() {
46175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mClassName;
46275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
46375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
46475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
46575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the class name of the source.
46675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
46775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param className The lass name.
46875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
46975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setClassName(CharSequence className) {
47075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mClassName = className;
47175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
47275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
47375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
47475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the package name of the source.
47575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
47675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The package name.
47775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
47875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public CharSequence getPackageName() {
47975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mPackageName;
48075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
48175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
48275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
48375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the package name of the source.
48475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
48575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param packageName The package name.
48675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
48775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setPackageName(CharSequence packageName) {
48875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mPackageName = packageName;
48975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
49075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
49175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
49275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the text of the event. The index in the list represents the priority
49375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * of the text. Specifically, the lower the index the higher the priority.
49475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
49575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The text.
49675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
49775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public List<CharSequence> getText() {
49875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mText;
49975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
50075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
50175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
50275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the text before a change.
50375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
50475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The text before the change.
50575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
50675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public CharSequence getBeforeText() {
50775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mBeforeText;
50875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
50975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
51075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
51175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the text before a change.
51275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
51375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param beforeText The text before the change.
51475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
51575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setBeforeText(CharSequence beforeText) {
51675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mBeforeText = beforeText;
51775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
51875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
51975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
52075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the description of the source.
52175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
52275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The description.
52375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
52475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public CharSequence getContentDescription() {
52575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mContentDescription;
52675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
52775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
52875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
52975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the description of the source.
53075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
53175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param contentDescription The description.
53275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
53375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setContentDescription(CharSequence contentDescription) {
53475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mContentDescription = contentDescription;
53575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
53675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
53775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
53875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the {@link Parcelable} data.
53975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
54075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The parcelable data.
54175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
54275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public Parcelable getParcelableData() {
54375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return mParcelableData;
54475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
54575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
54675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
54775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets the {@link Parcelable} data of the event.
54875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
54975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param parcelableData The parcelable data.
55075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
55175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void setParcelableData(Parcelable parcelableData) {
55275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mParcelableData = parcelableData;
55375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
55475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
55575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
55675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Returns a cached instance if such is available or a new one is
55775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * instantiated with type property set.
55875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
55975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param eventType The event type.
56075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return An instance.
56175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
56275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static AccessibilityEvent obtain(int eventType) {
56375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        AccessibilityEvent event = AccessibilityEvent.obtain();
56475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        event.setEventType(eventType);
56575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return event;
56675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
56775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
56875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
56975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Returns a cached instance if such is available or a new one is
57075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * instantiated.
57175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
57275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return An instance.
57375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
57475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static AccessibilityEvent obtain() {
57575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        synchronized (mPoolLock) {
57675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            if (sPool != null) {
57775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                AccessibilityEvent event = sPool;
57875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                sPool = sPool.mNext;
57975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                sPoolSize--;
58075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                event.mNext = null;
58175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                event.mIsInPool = false;
58275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                return event;
58375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            }
58475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            return new AccessibilityEvent();
58575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
58675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
58775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
58875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
58975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Return an instance back to be reused.
59075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * <p>
59175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * <b>Note: You must not touch the object after calling this function.</b>
59275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
59375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void recycle() {
59475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        if (mIsInPool) {
59575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            return;
59675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
59775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
59875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        clear();
59975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        synchronized (mPoolLock) {
60075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            if (sPoolSize <= MAX_POOL_SIZE) {
60175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                mNext = sPool;
60275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                sPool = this;
60375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                mIsInPool = true;
60475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov                sPoolSize++;
60575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            }
60675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
60775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
60875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
60975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
61075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Clears the state of this instance.
61175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
61275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private void clear() {
61375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventType = 0;
61475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mBooleanProperties = 0;
61575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mCurrentItemIndex = INVALID_POSITION;
61675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mItemCount = 0;
61775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mFromIndex = 0;
61875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mAddedCount = 0;
61975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mRemovedCount = 0;
62075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventTime = 0;
62175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mClassName = null;
62275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mPackageName = null;
62375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mContentDescription = null;
62475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mBeforeText = null;
62575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mText.clear();
62675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
62775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
62875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
62975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Gets the value of a boolean property.
63075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
63175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param property The property.
63275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return The value.
63375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
63475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private boolean getBooleanProperty(int property) {
63575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return (mBooleanProperties & property) == property;
63675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
63775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
63875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
63975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Sets a boolean property.
64075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
64175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param property The property.
64275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param value The value.
64375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
64475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private void setBooleanProperty(int property, boolean value) {
64575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        if (value) {
64675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            mBooleanProperties |= property;
64775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        } else {
64875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            mBooleanProperties &= ~property;
64975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
65075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
65175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
65275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
65375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * Creates a new instance from a {@link Parcel}.
65475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     *
65575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @param parcel A parcel containing the state of a {@link AccessibilityEvent}.
65675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
65775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void initFromParcel(Parcel parcel) {
65875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventType = parcel.readInt();
65975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mBooleanProperties = parcel.readInt();
66075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mCurrentItemIndex = parcel.readInt();
66175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mItemCount = parcel.readInt();
66275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mFromIndex = parcel.readInt();
66375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mAddedCount = parcel.readInt();
66475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mRemovedCount = parcel.readInt();
66575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mEventTime = parcel.readLong();
66675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mClassName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
66775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mPackageName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
66875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
66975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mBeforeText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
67075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        mParcelableData = parcel.readParcelable(null);
67175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.readList(mText, null);
67275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
67375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
67475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public void writeToParcel(Parcel parcel, int flags) {
67575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mEventType);
67675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mBooleanProperties);
67775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mCurrentItemIndex);
67875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mItemCount);
67975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mFromIndex);
68075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mAddedCount);
68175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeInt(mRemovedCount);
68275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeLong(mEventTime);
68375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        TextUtils.writeToParcel(mClassName, parcel, 0);
68475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        TextUtils.writeToParcel(mPackageName, parcel, 0);
68575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        TextUtils.writeToParcel(mContentDescription, parcel, 0);
68675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        TextUtils.writeToParcel(mBeforeText, parcel, 0);
68775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeParcelable(mParcelableData, flags);
68875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        parcel.writeList(mText);
68975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
69075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
69175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public int describeContents() {
69275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return 0;
69375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
69475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
69575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    @Override
69675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public String toString() {
69775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        StringBuilder builder = new StringBuilder();
69875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append(super.toString());
69975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; EventType: " + mEventType);
70075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; EventTime: " + mEventTime);
70175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; ClassName: " + mClassName);
70275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; PackageName: " + mPackageName);
70375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; Text: " + mText);
70475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; ContentDescription: " + mContentDescription);
70575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; ItemCount: " + mItemCount);
70675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; CurrentItemIndex: " + mCurrentItemIndex);
70775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; IsEnabled: " + isEnabled());
70875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; IsPassword: " + isPassword());
70975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; IsChecked: " + isChecked());
71075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; IsFullScreen: " + isFullScreen());
71175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; BeforeText: " + mBeforeText);
71275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; FromIndex: " + mFromIndex);
71375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; AddedCount: " + mAddedCount);
71475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; RemovedCount: " + mRemovedCount);
71575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        builder.append("; ParcelableData: " + mParcelableData);
71675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return builder.toString();
71775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
71875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
71975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
72075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @see Parcelable.Creator
72175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
72275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    public static final Parcelable.Creator<AccessibilityEvent> CREATOR =
72375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            new Parcelable.Creator<AccessibilityEvent>() {
72475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        public AccessibilityEvent createFromParcel(Parcel parcel) {
72575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            AccessibilityEvent event = AccessibilityEvent.obtain();
72675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            event.initFromParcel(parcel);
72775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            return event;
72875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
72975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
73075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        public AccessibilityEvent[] newArray(int size) {
73175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            return new AccessibilityEvent[size];
73275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        }
73375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    };
73475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov}
735