#include "config.h"
#include "InitWebCoreQt.h"
#include "Chrome.h"
#include "ChromeClientQt.h"
#include "Font.h"
#include "Image.h"
#include "InitializeLogging.h"
#include "MemoryCache.h"
#include "NotImplemented.h"
#include "Page.h"
#include "PlatformStrategiesQt.h"
#include "RenderThemeQStyle.h"
#include "ScriptController.h"
#include "ScrollbarThemeQStyle.h"
#include "SecurityPolicy.h"
#include "qwebelement_p.h"
#include <JavaScriptCore/runtime/InitializeThreading.h>
#include <wtf/MainThread.h>
namespace WebKit {
static QtStyleFacadeFactoryFunction initCallback = 0;
Q_DECL_EXPORT void setWebKitWidgetsInitCallback(QtStyleFacadeFactoryFunction callback)
{
initCallback = callback;
}
static WebCore::QStyleFacade* createStyleForPage(WebCore::Page* page)
{
QWebPageAdapter* pageAdapter = 0;
if (page)
pageAdapter = static_cast<WebCore::ChromeClientQt*>(page->chrome().client())->m_webPage;
return initCallback(pageAdapter);
}
Q_DECL_EXPORT void initializeWebKitQt()
{
if (initCallback) {
WebCore::RenderThemeQStyle::setStyleFactoryFunction(createStyleForPage);
WebCore::RenderThemeQt::setCustomTheme(WebCore::RenderThemeQStyle::create, new WebCore::ScrollbarThemeQStyle);
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
WebCore::Font::setDefaultTypesettingFeatures(WebCore::Kerning);
#endif
}
}
Q_DECL_EXPORT void setImagePlatformResource(const char* name, const QPixmap& pixmap)
{
WebCore::Image::setPlatformResource(name, pixmap);
}
}
namespace WebCore {
Q_DECL_EXPORT void initializeWebCoreQt()
{
static bool initialized = false;
if (initialized)
return;
#if !LOG_DISABLED
WebCore::initializeLoggingChannelsIfNecessary();
#endif // !LOG_DISABLED
ScriptController::initializeThreading();
WTF::initializeMainThread();
WebCore::SecurityPolicy::setLocalLoadPolicy(WebCore::SecurityPolicy::AllowLocalLoadsForLocalAndSubstituteData);
PlatformStrategiesQt::initialize();
QtWebElementRuntime::initialize();
if (!WebCore::memoryCache()->disabled())
WebCore::memoryCache()->setDeadDecodedDataDeletionInterval(60);
initialized = true;
}
}