diff options
| author | Patrick Scott <phanna@android.com> | 2009-11-23 08:19:13 -0500 |
|---|---|---|
| committer | Patrick Scott <phanna@android.com> | 2009-11-23 09:04:25 -0500 |
| commit | 4ceb72860b5e5d1431e3a528e70b49d4358fecdb (patch) | |
| tree | b6b54295b9cfc600ee34a5209065e8a844d297d2 /WebKit/android/benchmark/Intercept.h | |
| parent | 5c8e67320b039ad4e9fdd0300118c6f87fd28091 (diff) | |
| download | external_webkit-4ceb72860b5e5d1431e3a528e70b49d4358fecdb.zip external_webkit-4ceb72860b5e5d1431e3a528e70b49d4358fecdb.tar.gz external_webkit-4ceb72860b5e5d1431e3a528e70b49d4358fecdb.tar.bz2 | |
Move the benchmark code inside libwebcore.so
This adds about 8k of code to the library but it allows the benchmark to run
without modifying the library. This makes it ideal when testing libwebcore.so
since it is the exact same as our running library. It also makes it possible to
always build the benchmark app.
Diffstat (limited to 'WebKit/android/benchmark/Intercept.h')
| -rw-r--r-- | WebKit/android/benchmark/Intercept.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/WebKit/android/benchmark/Intercept.h b/WebKit/android/benchmark/Intercept.h new file mode 100644 index 0000000..a5e50c7 --- /dev/null +++ b/WebKit/android/benchmark/Intercept.h @@ -0,0 +1,80 @@ +/* + * Copyright 2009, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef INTERCEPT_H +#define INTERCEPT_H + +#include "jni_utility.h" +#include "MyJavaVM.h" +#include "PlatformString.h" +#include "Timer.h" +#include "Vector.h" +#include "WebCoreFrameBridge.h" +#include "WebCoreResourceLoader.h" + +namespace WebCore { + class Page; + class ResourceHandle; + class ResourceRequest; +} + +using namespace android; +using namespace WebCore; +using namespace WTF; + +class MyResourceLoader : public WebCoreResourceLoader { +public: + MyResourceLoader(ResourceHandle* handle, String url) + : WebCoreResourceLoader(JSC::Bindings::getJNIEnv(), MY_JOBJECT) + , m_handle(handle) + , m_url(url) {} + + void handleRequest(); + +private: + void loadData(const String&); + void loadFile(const String&); + ResourceHandle* m_handle; + String m_url; +}; + +class MyWebFrame : public WebFrame { +public: + MyWebFrame(Page* page) + : WebFrame(JSC::Bindings::getJNIEnv(), MY_JOBJECT, MY_JOBJECT, page) + , m_timer(this, &MyWebFrame::timerFired) {} + + virtual WebCoreResourceLoader* startLoadingResource(ResourceHandle* handle, + const ResourceRequest& req, bool); + + virtual bool canHandleRequest(const ResourceRequest&) { return true; } + +private: + void timerFired(Timer<MyWebFrame>*); + Vector<MyResourceLoader*> m_requests; + Timer<MyWebFrame> m_timer; +}; + +#endif |
