blob: 32a36549081579fdb76b563ed594d43816f8cac4 [file] [log] [blame]
/*
* Copyright (C) 2011 ProFUSION Embedded Systems
* Copyright (C) 2011 Samsung Electronics
* Copyright (C) 2012 Intel Corporation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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 AND ITS CONTRIBUTORS
* ``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 THE COPYRIGHT
* HOLDERS OR ITS 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 DumpRenderTreeChrome_h
#define DumpRenderTreeChrome_h
#include "GCController.h"
#include <Eina.h>
#include <Evas.h>
#include <ewk_intent_request.h>
#include <wtf/HashMap.h>
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
#include <wtf/text/CString.h>
class DumpRenderTreeChrome {
public:
~DumpRenderTreeChrome();
static PassOwnPtr<DumpRenderTreeChrome> create(Evas*);
Evas_Object* createNewWindow();
void removeWindow(Evas_Object*);
Evas_Object* createInspectorView();
void removeInspectorView();
void waitInspectorLoadFinished();
const Vector<Evas_Object*>& extraViews() const;
void clearExtraViews();
Evas_Object* mainFrame() const;
Evas_Object* mainView() const;
Ewk_Intent_Request* currentIntentRequest() const;
void resetDefaultsToConsistentValues();
private:
DumpRenderTreeChrome(Evas*);
Evas_Object* createView() const;
bool initialize();
Evas_Object* m_mainFrame;
Evas_Object* m_mainView;
Evas* m_evas;
OwnPtr<GCController> m_gcController;
Vector<Evas_Object*> m_extraViews;
static HashMap<unsigned long, CString> m_dumpAssignedUrls;
static Evas_Object* m_provisionalLoadFailedFrame;
static Ewk_Intent_Request* m_currentIntentRequest;
// Smart callbacks
static void onWindowObjectCleared(void*, Evas_Object*, void*);
static void onLoadStarted(void*, Evas_Object*, void*);
static Eina_Bool processWork(void*);
static void topLoadingFrameLoadFinished();
static void onStatusbarTextSet(void*, Evas_Object*, void*);
static void onFrameTitleChanged(void*, Evas_Object*, void*);
static void onDocumentLoadFinished(void*, Evas_Object*, void*);
static void onWillSendRequest(void*, Evas_Object*, void*);
static void onWebViewOnloadEvent(void*, Evas_Object*, void*);
static void onWebViewNavigatedWithData(void*, Evas_Object*, void*);
static void onWebViewServerRedirect(void*, Evas_Object*, void*);
static void onWebViewClientRedirect(void*, Evas_Object*, void*);
static void onWebViewPopulateVisitedLinks(void*, Evas_Object*, void*);
static void onInsecureContentRun(void*, Evas_Object*, void*);
static void onInsecureContentDisplayed(void*, Evas_Object*, void*);
static void onFrameCreated(void*, Evas_Object*, void*);
static void onInspectorViewCreate(void*, Evas_Object*, void*);
static void onInspectorViewClose(void*, Evas_Object*, void*);
static void onInspectorFrameLoadFinished(void*, Evas_Object*, void*);
static void onFrameIconChanged(void*, Evas_Object*, void*);
static void onFrameProvisionalLoad(void*, Evas_Object*, void*);
static void onFrameProvisionalLoadFailed(void*, Evas_Object*, void*);
static void onFrameLoadCommitted(void*, Evas_Object*, void*);
static void onFrameLoadFinished(void*, Evas_Object*, void*);
static void onFrameRedirectCancelled(void*, Evas_Object*, void*);
static void onFrameRedirectForProvisionalLoad(void*, Evas_Object*, void*);
static void onFrameRedirectRequested(void*, Evas_Object*, void*);
static void onFrameLoadError(void*, Evas_Object*, void*);
static void onDidDetectXSS(void*, Evas_Object*, void*);
static void onResponseReceived(void*, Evas_Object*, void*);
static void onResourceLoadFinished(void*, Evas_Object*, void*);
static void onResourceLoadFailed(void*, Evas_Object*, void*);
static void onNewResourceRequest(void*, Evas_Object*, void*);
static void onFrameIntentNew(void*, Evas_Object*, void*);
static void onFrameIntentServiceRegistration(void*, Evas_Object*, void*);
static void onDownloadRequest(void*, Evas_Object*, void*);
};
#endif // DumpRenderTreeChrome_h