Home | History | Annotate | Download | only in network
      1 /*
      2  * Copyright (C) 2010 Google, Inc. All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef ResourceLoadTiming_h
     27 #define ResourceLoadTiming_h
     28 
     29 #include <wtf/PassRefPtr.h>
     30 #include <wtf/RefCounted.h>
     31 #include <wtf/RefPtr.h>
     32 
     33 namespace WebCore {
     34 
     35 class ResourceLoadTiming : public RefCounted<ResourceLoadTiming> {
     36 public:
     37     static PassRefPtr<ResourceLoadTiming> create()
     38     {
     39         return adoptRef(new ResourceLoadTiming);
     40     }
     41 
     42     PassRefPtr<ResourceLoadTiming> deepCopy()
     43     {
     44         RefPtr<ResourceLoadTiming> timing = create();
     45         timing->requestTime = requestTime;
     46         timing->proxyStart = proxyStart;
     47         timing->proxyEnd = proxyEnd;
     48         timing->dnsStart = dnsStart;
     49         timing->dnsEnd = dnsEnd;
     50         timing->connectStart = connectStart;
     51         timing->connectEnd = connectEnd;
     52         timing->sendStart = sendStart;
     53         timing->sendEnd = sendEnd;
     54         timing->receiveHeadersEnd = receiveHeadersEnd;
     55         timing->sslStart = sslStart;
     56         timing->sslEnd = sslEnd;
     57         return timing.release();
     58     }
     59 
     60     bool operator==(const ResourceLoadTiming& other) const
     61     {
     62         return requestTime == other.requestTime
     63             && proxyStart == other.proxyStart
     64             && proxyEnd == other.proxyEnd
     65             && dnsStart == other.dnsStart
     66             && dnsEnd == other.dnsEnd
     67             && connectStart == other.connectStart
     68             && connectEnd == other.connectEnd
     69             && sendStart == other.sendStart
     70             && sendEnd == other.sendEnd
     71             && receiveHeadersEnd == other.receiveHeadersEnd
     72             && sslStart == other.sslStart
     73             && sslEnd == other.sslEnd;
     74     }
     75 
     76     bool operator!=(const ResourceLoadTiming& other) const
     77     {
     78         return !(*this == other);
     79     }
     80 
     81     double requestTime;
     82     int proxyStart;
     83     int proxyEnd;
     84     int dnsStart;
     85     int dnsEnd;
     86     int connectStart;
     87     int connectEnd;
     88     int sendStart;
     89     int sendEnd;
     90     int receiveHeadersEnd;
     91     int sslStart;
     92     int sslEnd;
     93 
     94 private:
     95     ResourceLoadTiming()
     96         : requestTime(0)
     97         , proxyStart(-1)
     98         , proxyEnd(-1)
     99         , dnsStart(-1)
    100         , dnsEnd(-1)
    101         , connectStart(-1)
    102         , connectEnd(-1)
    103         , sendStart(0)
    104         , sendEnd(0)
    105         , receiveHeadersEnd(0)
    106         , sslStart(-1)
    107         , sslEnd(-1)
    108     {
    109     }
    110 };
    111 
    112 }
    113 
    114 #endif
    115