/*
 * Copyright (C) 2011 Igalia S.L.
 * Portions Copyright (c) 2011 Motorola Mobility, Inc.  All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

#ifdef __WEBKIT_WEB_EXTENSION_H__
#error "Headers <wpe/webkit.h> and <wpe/webkit-web-extension.h> cannot be included together."
#endif

#ifndef __WEBKIT_H__
#define __WEBKIT_H__

#define __WEBKIT_H_INSIDE__

#include <wpe/WebKitApplicationInfo.h>
#include <wpe/WebKitAuthenticationRequest.h>
#include <wpe/WebKitAutomationSession.h>
#include <wpe/WebKitBackForwardList.h>
#include <wpe/WebKitBackForwardListItem.h>
#include <wpe/WebKitContextMenu.h>
#include <wpe/WebKitContextMenuActions.h>
#include <wpe/WebKitContextMenuItem.h>
#include <wpe/WebKitCookieManager.h>
#include <wpe/WebKitCredential.h>
#include <wpe/WebKitDefines.h>
#include <wpe/WebKitDeviceInfoPermissionRequest.h>
#include <wpe/WebKitDownload.h>
#include <wpe/WebKitEditingCommands.h>
#include <wpe/WebKitEditorState.h>
#include <wpe/WebKitEnumTypes.h>
#include <wpe/WebKitError.h>
#include <wpe/WebKitFaviconDatabase.h>
#include <wpe/WebKitFindController.h>
#include <wpe/WebKitFormSubmissionRequest.h>
#include <wpe/WebKitGeolocationManager.h>
#include <wpe/WebKitGeolocationPermissionRequest.h>
#include <wpe/WebKitHitTestResult.h>
#include <wpe/WebKitInstallMissingMediaPluginsPermissionRequest.h>
#include <wpe/WebKitJavascriptResult.h>
#include <wpe/WebKitMimeInfo.h>
#include <wpe/WebKitNavigationAction.h>
#include <wpe/WebKitNavigationPolicyDecision.h>
#include <wpe/WebKitNetworkProxySettings.h>
#include <wpe/WebKitNotification.h>
#include <wpe/WebKitNotificationPermissionRequest.h>
#include <wpe/WebKitPermissionRequest.h>
#include <wpe/WebKitPlugin.h>
#include <wpe/WebKitResponsePolicyDecision.h>
#include <wpe/WebKitScriptDialog.h>
#include <wpe/WebKitSecurityManager.h>
#include <wpe/WebKitSecurityOrigin.h>
#include <wpe/WebKitSettings.h>
#include <wpe/WebKitURIRequest.h>
#include <wpe/WebKitURIResponse.h>
#include <wpe/WebKitURISchemeRequest.h>
#include <wpe/WebKitURIUtilities.h>
#include <wpe/WebKitUserContent.h>
#include <wpe/WebKitUserContentFilterStore.h>
#include <wpe/WebKitUserContentManager.h>
#include <wpe/WebKitUserMediaPermissionRequest.h>
#include <wpe/WebKitUserMessage.h>
#include <wpe/WebKitVersion.h>
#include <wpe/WebKitWebContext.h>
#include <wpe/WebKitWebResource.h>
#include <wpe/WebKitWebView.h>
#include <wpe/WebKitWebViewBackend.h>
#include <wpe/WebKitWebViewSessionState.h>
#include <wpe/WebKitWebsiteData.h>
#include <wpe/WebKitWebsiteDataManager.h>
#include <wpe/WebKitWindowProperties.h>

#include <wpe/WebKitAutocleanups.h>

#undef __WEBKIT_H_INSIDE__

#endif /* __WEBKIT_H__ */
