19ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
29ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz
39ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultzimport android.content.Context;
49ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultzimport android.util.AttributeSet;
5258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Graftonimport android.webkit.WebChromeClient;
622ae9206e660fd187ff79a529452dbe2bab504fdRich Humphreyimport android.webkit.WebSettings;
7f99fa781cfd614512c48db52387c825d4f167f31Michael Portuesiimport android.webkit.TestWebSettings;
89ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultzimport android.webkit.WebView;
9fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphreyimport android.webkit.WebViewClient;
1022ae9206e660fd187ff79a529452dbe2bab504fdRich Humphreyimport com.xtremelabs.robolectric.Robolectric;
1122c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
1222c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
139ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz
1440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport java.util.HashMap;
1540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
169ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz@SuppressWarnings({"UnusedDeclaration"})
179ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz@Implements(WebView.class)
189ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultzpublic class ShadowWebView extends ShadowAbsoluteLayout {
199ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz
206cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    private String lastUrl;
2140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    private HashMap<String, Object> javascriptInterfaces = new HashMap<String, Object>();
22f99fa781cfd614512c48db52387c825d4f167f31Michael Portuesi    private WebSettings webSettings = new TestWebSettings();
23fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    private WebViewClient webViewClient = null;
2437c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    private boolean runFlag = false;
258455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    private boolean clearCacheCalled = false;
268455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    private boolean clearCacheIncludeDiskFiles = false;
279677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    private boolean clearFormDataCalled = false;
289677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    private boolean clearHistoryCalled = false;
299677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    private boolean clearViewCalled = false;
309677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    private boolean destroyCalled = false;
31258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    private WebChromeClient webChromeClient;
323892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    private boolean canGoBack;
333892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    private int goBackInvocations = 0;
344972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    private ShadowWebView.LoadData lastLoadData;
354972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    private LoadDataWithBaseURL lastLoadDataWithBaseURL;
369b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    private WebView.PictureListener pictureListener;
376cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz
383892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    @Override
393892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    public void __constructor__(Context context, AttributeSet attributeSet) {
409ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz        super.__constructor__(context, attributeSet);
419ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz    }
426cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz
436cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    @Implementation
446cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    public void loadUrl(String url) {
456cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz        lastUrl = url;
466cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    }
4740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
48e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    @Implementation
494972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
504972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        lastLoadDataWithBaseURL = new LoadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
514972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    }
524972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz
534972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    @Implementation
54e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    public void loadData(String data, String mimeType, String encoding) {
554972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        lastLoadData = new LoadData(data, mimeType, encoding);
56e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    }
57e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz
5831811e1435d6c72ee6c324ca49769159e80fcd93Tyler Schultz    /**
5931811e1435d6c72ee6c324ca49769159e80fcd93Tyler Schultz     * Non-Android accessor.
6031811e1435d6c72ee6c324ca49769159e80fcd93Tyler Schultz     *
6131811e1435d6c72ee6c324ca49769159e80fcd93Tyler Schultz     * @return the last loaded url
6231811e1435d6c72ee6c324ca49769159e80fcd93Tyler Schultz     */
636cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    public String getLastLoadedUrl() {
646cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz        return lastUrl;
656cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    }
6640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
6740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    @Implementation
68fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    public WebSettings getSettings() {
6940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        return webSettings;
70fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    }
71fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey
72fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    @Implementation
73fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    public void setWebViewClient(WebViewClient client) {
7440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        webViewClient = client;
75fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    }
7640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
77258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    @Implementation
78258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    public void setWebChromeClient(WebChromeClient client) {
79258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton        webChromeClient = client;
80258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    }
81258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton
82fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    public WebViewClient getWebViewClient() {
8340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        return webViewClient;
84fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    }
859b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi
869b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    @Implementation
879b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    public void setPictureListener(WebView.PictureListener listener) {
889b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    	pictureListener = listener;
899b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    }
909b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi
919b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    public WebView.PictureListener getPictureListener() {
929b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    	return pictureListener;
939b01bc1fb0b241eafdbe239f56b95a2690aca727Michael Portuesi    }
9440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
95fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    @Implementation
96fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    public void addJavascriptInterface(Object obj, String interfaceName) {
9740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        javascriptInterfaces.put(interfaceName, obj);
98fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    }
9940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
100fbdac5127ba5b6b879408a0a6ae4ac30e2456d8cRich Humphrey    public Object getJavascriptInterface(String interfaceName) {
10140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        return javascriptInterfaces.get(interfaceName);
10240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    }
1033892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
10437c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    @Implementation
1059677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public void clearCache(boolean includeDiskFiles) {
1063892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        clearCacheCalled = true;
1073892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        clearCacheIncludeDiskFiles = includeDiskFiles;
1088455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    }
1093892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1108455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    public boolean wasClearCacheCalled() {
1113892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return clearCacheCalled;
1128455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    }
1133892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1148455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    public boolean didClearCacheIncludeDiskFiles() {
1153892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return clearCacheIncludeDiskFiles;
1168455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    }
1173892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1188455cc9031f98a53ad469ebe4b9d92511af8b54fRich Humphrey    @Implementation
1199677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public void clearFormData() {
1203892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        clearFormDataCalled = true;
1219677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1223892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1239677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public boolean wasClearFormDataCalled() {
1243892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return clearFormDataCalled;
1259677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1263892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1279677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    @Implementation
1289677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public void clearHistory() {
1293892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        clearHistoryCalled = true;
1309677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1313892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1329677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public boolean wasClearHistoryCalled() {
1333892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return clearHistoryCalled;
1349677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1353892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1369677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    @Implementation
1379677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public void clearView() {
1383892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        clearViewCalled = true;
1399677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1403892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1419677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public boolean wasClearViewCalled() {
1423892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return clearViewCalled;
1433892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
1443892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1459677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    @Implementation
1469677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public void destroy() {
1473892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        destroyCalled = true;
1489677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    }
1493892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1509677b3a80b929a57a7ee1d4301d5e9ffb51f3182Rich Humphrey    public boolean wasDestroyCalled() {
1513892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return destroyCalled;
1523892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
1533892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1543892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    @Implementation
15537c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    public void post(Runnable action) {
1563892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        action.run();
1573892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        runFlag = true;
15837c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    }
1593892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
16037c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    public boolean getRunFlag() {
1613892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return runFlag;
16237c667d06608e4bebd0f45ffbf1555ce5bd30493Zoodles    }
163258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton
1643892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1653892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    /**
1663892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * Non-Android accessor.
1673892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     *
1683892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * @return webChromeClient
1693892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     */
170258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    public WebChromeClient getWebChromeClient() {
171258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton        return webChromeClient;
172258aab42887fa7a6d29fe862eb883c62deafde0cGreg Choi & Mike Grafton    }
1733892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1743892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    @Implementation
1753892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    public boolean canGoBack() {
1763892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return canGoBack;
1773892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
1783892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1793892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    @Implementation
1803892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    public void goBack() {
1813892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        goBackInvocations++;
1823892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
1833892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1843892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1853892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    /**
1863892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * Non-Android accessor.
1873892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     *
1883892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * @return goBackInvocations the number of times {@code android.webkit.WebView#goBack()}
1893892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * was invoked
1903892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     */
1913892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    public int getGoBackInvocations() {
1923892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        return goBackInvocations;
1933892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
1943892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz
1953892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    /**
1963892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * Non-Android setter.
1973892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     *
1983892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * Sets the value to return from {@code android.webkit.WebView#canGoBack()}
1993892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     *
2003892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     * @param canGoBack
2013892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz     */
2023892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    public void setCanGoBack(boolean canGoBack) {
2033892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz        this.canGoBack = canGoBack;
2043892868c17d4ed48ccf77e25c2cef9bf3b1c82dcMike Mazur & Tyler Schultz    }
205e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz
2064972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    public LoadData getLastLoadData() {
2074972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        return lastLoadData;
208e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    }
209e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz
2104972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    public LoadDataWithBaseURL getLastLoadDataWithBaseURL() {
2114972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        return lastLoadDataWithBaseURL;
212e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    }
213e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz
2144972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    public class LoadDataWithBaseURL {
2154972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String baseUrl;
2164972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String data;
2174972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String mimeType;
2184972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String encoding;
2194972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String historyUrl;
2204972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz
2214972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public LoadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
2224972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.baseUrl = baseUrl;
2234972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.data = data;
2244972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.mimeType = mimeType;
2254972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.encoding = encoding;
2264972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.historyUrl = historyUrl;
2274972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        }
2284972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    }
2294972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz
2304972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz    public class LoadData {
2314972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String data;
2324972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String mimeType;
2334972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public final String encoding;
2344972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz
2354972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        public LoadData(String data, String mimeType, String encoding) {
2364972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.data = data;
2374972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.mimeType = mimeType;
2384972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz            this.encoding = encoding;
2394972836088ee1b2369abd4a668552c6b594f0436Mike Mazur & Tyler Schultz        }
240e73ede4e90af0ae4f76bdbcd54a170b4bba52b39Tyler Schultz    }
2419ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz}
242