| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright (C) 2010 Julien Chaffraix <jchaffraix@webkit.org> |    2  * Copyright (C) 2010 Julien Chaffraix <jchaffraix@webkit.org> | 
|    3  * All right reserved. |    3  * All right reserved. | 
|    4  * |    4  * | 
|    5  * Redistribution and use in source and binary forms, with or without |    5  * Redistribution and use in source and binary forms, with or without | 
|    6  * modification, are permitted provided that the following conditions |    6  * modification, are permitted provided that the following conditions | 
|    7  * are met: |    7  * are met: | 
|    8  * 1. Redistributions of source code must retain the above copyright |    8  * 1. Redistributions of source code must retain the above copyright | 
|    9  *    notice, this list of conditions and the following disclaimer. |    9  *    notice, this list of conditions and the following disclaimer. | 
|   10  * 2. Redistributions in binary form must reproduce the above copyright |   10  * 2. Redistributions in binary form must reproduce the above copyright | 
|   11  *    notice, this list of conditions and the following disclaimer in the |   11  *    notice, this list of conditions and the following disclaimer in the | 
|   12  *    documentation and/or other materials provided with the distribution. |   12  *    documentation and/or other materials provided with the distribution. | 
|   13  * |   13  * | 
|   14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |   14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
|   15  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |   15  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
|   16  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |   16  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
|   17  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |   17  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
|   18  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |   18  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
|   19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |   19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 
|   20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |   20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
|   21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |   21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
|   22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |   22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
|   23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |   23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
|   24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |   24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|   25  */ |   25  */ | 
|   26  |   26  | 
|   27 #ifndef XMLHttpRequestProgressEventThrottle_h |   27 #ifndef ProgressEventThrottle_h | 
|   28 #define XMLHttpRequestProgressEventThrottle_h |   28 #define ProgressEventThrottle_h | 
|   29  |   29  | 
|   30 #include "platform/Timer.h" |   30 #include "platform/Timer.h" | 
|   31 #include "platform/heap/Handle.h" |   31 #include "platform/heap/Handle.h" | 
|   32 #include "wtf/Forward.h" |   32 #include "wtf/Forward.h" | 
|   33 #include "wtf/PassRefPtr.h" |   33 #include "wtf/PassRefPtr.h" | 
|   34  |   34  | 
|   35 namespace blink { |   35 namespace blink { | 
|   36  |   36  | 
|   37 class Event; |   37 class Event; | 
|   38 class XMLHttpRequest; |   38 class XMLHttpRequest; | 
|   39  |   39  | 
|   40 // This class implements the XHR2 ProgressEvent dispatching: |   40 // This class implements the XHR2 ProgressEvent dispatching: | 
|   41 //   "dispatch a progress event named progress about every 50ms or for every |   41 //   "dispatch a progress event named progress about every 50ms or for every | 
|   42 //   byte received, whichever is least frequent". |   42 //   byte received, whichever is least frequent". | 
|   43 // |   43 // | 
|   44 // readystatechange events also go through this class since ProgressEvents and |   44 // readystatechange events also go through this class since ProgressEvents and | 
|   45 // readystatechange events affect each other. |   45 // readystatechange events affect each other. | 
|   46 // |   46 // | 
|   47 // In the comments for this class: |   47 // In the comments for this class: | 
|   48 // - "progress" event means an event named "progress" |   48 // - "progress" event means an event named "progress" | 
|   49 // - ProgressEvent means an event using the ProgressEvent interface defined in |   49 // - ProgressEvent means an event using the ProgressEvent interface defined in | 
|   50 //   the spec. |   50 //   the spec. | 
|   51 class XMLHttpRequestProgressEventThrottle final : public GarbageCollectedFinaliz
     ed<XMLHttpRequestProgressEventThrottle>, public TimerBase { |   51 class ProgressEventThrottle final : public GarbageCollectedFinalized<ProgressEve
     ntThrottle>, public TimerBase { | 
|   52 public: |   52 public: | 
|   53     static XMLHttpRequestProgressEventThrottle* create(XMLHttpRequest* eventTarg
     et) |   53     static ProgressEventThrottle* create(XMLHttpRequest* eventTarget) | 
|   54     { |   54     { | 
|   55         return new XMLHttpRequestProgressEventThrottle(eventTarget); |   55         return new ProgressEventThrottle(eventTarget); | 
|   56     } |   56     } | 
|   57     ~XMLHttpRequestProgressEventThrottle() override; |   57     ~ProgressEventThrottle() override; | 
|   58  |   58  | 
|   59     enum DeferredEventAction { |   59     enum DeferredEventAction { | 
|   60         Ignore, |   60         Ignore, | 
|   61         Clear, |   61         Clear, | 
|   62         Flush, |   62         Flush, | 
|   63     }; |   63     }; | 
|   64  |   64  | 
|   65     // Dispatches a ProgressEvent. |   65     // Dispatches a ProgressEvent. | 
|   66     // |   66     // | 
|   67     // Special treatment for events named "progress" is implemented to dispatch |   67     // Special treatment for events named "progress" is implemented to dispatch | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|   78     void dispatchReadyStateChangeEvent(PassRefPtrWillBeRawPtr<Event>, DeferredEv
     entAction); |   78     void dispatchReadyStateChangeEvent(PassRefPtrWillBeRawPtr<Event>, DeferredEv
     entAction); | 
|   79  |   79  | 
|   80     void suspend(); |   80     void suspend(); | 
|   81     void resume(); |   81     void resume(); | 
|   82  |   82  | 
|   83     // Need to promptly stop this timer when it is deemed finalizable. |   83     // Need to promptly stop this timer when it is deemed finalizable. | 
|   84     EAGERLY_FINALIZE(); |   84     EAGERLY_FINALIZE(); | 
|   85     DECLARE_TRACE(); |   85     DECLARE_TRACE(); | 
|   86  |   86  | 
|   87 private: |   87 private: | 
|   88     explicit XMLHttpRequestProgressEventThrottle(XMLHttpRequest*); |   88     explicit ProgressEventThrottle(XMLHttpRequest*); | 
|   89  |   89  | 
|   90     // Dispatches a "progress" progress event and usually a readyStateChange |   90     // Dispatches a "progress" progress event and usually a readyStateChange | 
|   91     // event as well. |   91     // event as well. | 
|   92     void dispatchProgressProgressEvent(PassRefPtrWillBeRawPtr<Event>); |   92     void dispatchProgressProgressEvent(PassRefPtrWillBeRawPtr<Event>); | 
|   93  |   93  | 
|   94     // The main purpose of this class is to throttle the "progress" |   94     // The main purpose of this class is to throttle the "progress" | 
|   95     // ProgressEvent dispatching. This class represents such a deferred |   95     // ProgressEvent dispatching. This class represents such a deferred | 
|   96     // "progress" ProgressEvent. |   96     // "progress" ProgressEvent. | 
|   97     class DeferredEvent { |   97     class DeferredEvent { | 
|   98     public: |   98     public: | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  120     // arrive, only the last one is stored and others are discarded. |  120     // arrive, only the last one is stored and others are discarded. | 
|  121     DeferredEvent m_deferred; |  121     DeferredEvent m_deferred; | 
|  122  |  122  | 
|  123     // True if any "progress" progress event has been dispatched since |  123     // True if any "progress" progress event has been dispatched since | 
|  124     // |m_target|'s readyState changed. |  124     // |m_target|'s readyState changed. | 
|  125     bool m_hasDispatchedProgressProgressEvent; |  125     bool m_hasDispatchedProgressProgressEvent; | 
|  126 }; |  126 }; | 
|  127  |  127  | 
|  128 } // namespace blink |  128 } // namespace blink | 
|  129  |  129  | 
|  130 #endif // XMLHttpRequestProgressEventThrottle_h |  130 #endif // ProgressEventThrottle_h | 
| OLD | NEW |