/*
 * 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 <webkit2/webkit2.h> and <webkit2/webkit-web-extension.h> cannot be included together."
#endif

#ifndef __WEBKIT_2_H__
#define __WEBKIT_2_H__

#define __WEBKIT2_H_INSIDE__

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

#include <webkit2/WebKitAutocleanups.h>

#undef __WEBKIT2_H_INSIDE__

#endif /* __WEBKIT2_H__ */
