1bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen/* 2bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * Copyright (C) 2010 Google Inc. All rights reserved. 3bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * 4bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * Redistribution and use in source and binary forms, with or without 5bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * modification, are permitted provided that the following conditions are 6bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * met: 7bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * 8bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * * Redistributions of source code must retain the above copyright 9bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * notice, this list of conditions and the following disclaimer. 10bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * * Redistributions in binary form must reproduce the above 11bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * copyright notice, this list of conditions and the following disclaimer 12bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * in the documentation and/or other materials provided with the 13bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * distribution. 14bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * * Neither the name of Google Inc. nor the names of its 15bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * contributors may be used to endorse or promote products derived from 16bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * this software without specific prior written permission. 17bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * 18bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen */ 30bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 31bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#ifndef WebPerformance_h 32bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#define WebPerformance_h 33bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 34bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include "WebCommon.h" 35bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include "WebNavigationType.h" 36bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include "WebPrivatePtr.h" 37bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 38bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsennamespace WebCore { class Performance; } 39bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 40bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsennamespace WebKit { 41bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 42bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenclass WebPerformance { 43bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenpublic: 44bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ~WebPerformance() { reset(); } 45bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 46bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPerformance() { } 47bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 48bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPerformance(const WebPerformance& p) { assign(p); } 49bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 50bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPerformance& operator=(const WebPerformance& p) 51bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen { 52bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen assign(p); 53bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen return *this; 54bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen } 55bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 56bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API void reset(); 57bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API void assign(const WebPerformance&); 58bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 59bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // This only returns one of {Other|Reload|BackForward}. 60bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // Form submits and link clicks all fall under other. 61bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API WebNavigationType navigationType() const; 62bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 63bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double navigationStart() const; 64bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double unloadEventEnd() const; 65bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double redirectStart() const; 66bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double redirectEnd() const; 67bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API unsigned short redirectCount() const; 68bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double fetchStart() const; 69bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double domainLookupStart() const; 70bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double domainLookupEnd() const; 71bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double connectStart() const; 72bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double connectEnd() const; 73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double requestStart() const; 74bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double responseStart() const; 75bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double responseEnd() const; 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WEBKIT_API double domLoading() const; 77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WEBKIT_API double domInteractive() const; 78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WEBKIT_API double domContentLoadedEventStart() const; 79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WEBKIT_API double domContentLoadedEventEnd() const; 80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WEBKIT_API double domComplete() const; 81bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double loadEventStart() const; 82bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WEBKIT_API double loadEventEnd() const; 83bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 84bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if WEBKIT_IMPLEMENTATION 85bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPerformance(const WTF::PassRefPtr<WebCore::Performance>&); 86bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPerformance& operator=(const WTF::PassRefPtr<WebCore::Performance>&); 87bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen operator WTF::PassRefPtr<WebCore::Performance>() const; 88bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif 89bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 90bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenprivate: 91bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen WebPrivatePtr<WebCore::Performance> m_private; 92bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen}; 93bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 94bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} // namespace WebKit 95bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 96bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif 97