165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met: 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1. Redistributions of source code must retain the above copyright 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer. 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer in the 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * documentation and/or other materials provided with the distribution. 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE. 2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef WebContext_h 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define WebContext_h 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "APIObject.h" 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "PluginInfoStore.h" 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ProcessModel.h" 3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "VisitedLinkProvider.h" 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebContextInjectedBundleClient.h" 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebDownloadClient.h" 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebHistoryClient.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebProcessProxy.h" 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/LinkHash.h> 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Forward.h> 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/HashSet.h> 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/PassRefPtr.h> 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/RefPtr.h> 4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/StringHash.h> 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/WTFString.h> 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit { 4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass DownloadProxy; 4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass WebApplicationCacheManagerProxy; 4981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass WebCookieManagerProxy; 5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebDatabaseManagerProxy; 5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebGeolocationManagerProxy; 522bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebIconDatabase; 5381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass WebKeyValueStorageManagerProxy; 542bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebMediaCacheManagerProxy; 5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPageGroup; 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPageProxy; 5781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass WebResourceCacheManagerProxy; 5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct WebProcessCreationParameters; 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebContext : public APIObject { 6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic: 6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static const Type APIType = TypeContext; 6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static WebContext* sharedProcessContext(); 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static WebContext* sharedThreadContext(); 6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static PassRefPtr<WebContext> create(const String& injectedBundlePath); 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual ~WebContext(); 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static const Vector<WebContext*>& allContexts(); 7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void initializeInjectedBundleClient(const WKContextInjectedBundleClient*); 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void initializeHistoryClient(const WKContextHistoryClient*); 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void initializeDownloadClient(const WKContextDownloadClient*); 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ProcessModel processModel() const { return m_processModel; } 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebProcessProxy* process() const { return m_process.get(); } 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch template<typename U> bool sendToAllProcesses(const U& message); 802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch template<typename U> bool sendToAllProcessesRelaunchingThemIfNecessary(const U& message); 812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void processDidFinishLaunching(WebProcessProxy*); 8381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 8481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Disconnect the process from the context. 8581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void disconnectProcess(WebProcessProxy*); 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebPageGroup*); 8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebProcessProxy* relaunchProcessIfNecessary(); 9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch const String& injectedBundlePath() const { return m_injectedBundlePath; } 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch DownloadProxy* download(WebPageProxy* initiatingPage, const WebCore::ResourceRequest&); 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setInjectedBundleInitializationUserData(PassRefPtr<APIObject> userData) { m_injectedBundleInitializationUserData = userData; } 9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch APIObject* injectedBundleInitializationUserData() const { return m_injectedBundleInitializationUserData.get(); } 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void postMessageToInjectedBundle(const String&, APIObject*); 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // InjectedBundle client 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didReceiveMessageFromInjectedBundle(const String&, APIObject*); 10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didReceiveSynchronousMessageFromInjectedBundle(const String&, APIObject*, RefPtr<APIObject>& returnData); 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void populateVisitedLinks(); 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setAdditionalPluginsDirectory(const String&); 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch PluginInfoStore* pluginInfoStore() { return &m_pluginInfoStore; } 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch String applicationCacheDirectory(); 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setAlwaysUsesComplexTextCodePath(bool); 11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void registerURLSchemeAsEmptyDocument(const String&); 11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void registerURLSchemeAsSecure(const String&); 11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setDomainRelaxationForbiddenForURLScheme(const String&); 11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addVisitedLink(const String&); 11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addVisitedLinkHash(WebCore::LinkHash); 11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch CoreIPC::SyncReplyMode didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*); 12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setCacheModel(CacheModel); 12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch CacheModel cacheModel() const { return m_cacheModel; } 12581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 12681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void setDefaultRequestTimeoutInterval(double); 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void startMemorySampler(const double interval); 12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void stopMemorySampler(); 13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setShouldPaintNativeControls(bool); 1332bde8e466a4451c7319e3a072d118917957d6554Steve Block 1342bde8e466a4451c7319e3a072d118917957d6554Steve Block void setInitialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy) { m_initialHTTPCookieAcceptPolicy = policy; } 13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1372bde8e466a4451c7319e3a072d118917957d6554Steve Block void setEnhancedAccessibility(bool); 1382bde8e466a4451c7319e3a072d118917957d6554Steve Block 13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Downloads. 1402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch DownloadProxy* createDownloadProxy(); 14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebDownloadClient& downloadClient() { return m_downloadClient; } 14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void downloadFinished(DownloadProxy*); 14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static HashSet<String, CaseFoldingHash> pdfAndPostScriptMIMETypes(); 14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebApplicationCacheManagerProxy* applicationCacheManagerProxy() const { return m_applicationCacheManagerProxy.get(); } 14781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebCookieManagerProxy* cookieManagerProxy() const { return m_cookieManagerProxy.get(); } 14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebDatabaseManagerProxy* databaseManagerProxy() const { return m_databaseManagerProxy.get(); } 14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebGeolocationManagerProxy* geolocationManagerProxy() const { return m_geolocationManagerProxy.get(); } 1502bde8e466a4451c7319e3a072d118917957d6554Steve Block WebIconDatabase* iconDatabase() const { return m_iconDatabase.get(); } 15181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebKeyValueStorageManagerProxy* keyValueStorageManagerProxy() const { return m_keyValueStorageManagerProxy.get(); } 1522bde8e466a4451c7319e3a072d118917957d6554Steve Block WebMediaCacheManagerProxy* mediaCacheManagerProxy() const { return m_mediaCacheManagerProxy.get(); } 15381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebPluginSiteDataManager* pluginSiteDataManager() const { return m_pluginSiteDataManager.get(); } 15481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebResourceCacheManagerProxy* resourceCacheManagerProxy() const { return m_resourceCacheManagerProxy.get(); } 15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch struct Statistics { 15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch unsigned wkViewCount; 15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch unsigned wkPageCount; 15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch unsigned wkFrameCount; 16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch }; 1612bde8e466a4451c7319e3a072d118917957d6554Steve Block static Statistics& statistics(); 16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void setDatabaseDirectory(const String& dir) { m_overrideDatabaseDirectory = dir; } 1642bde8e466a4451c7319e3a072d118917957d6554Steve Block void setIconDatabasePath(const String&); 1652bde8e466a4451c7319e3a072d118917957d6554Steve Block void setLocalStorageDirectory(const String& dir) { m_overrideLocalStorageDirectory = dir; } 1662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 16781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void ensureWebProcess(); 16881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 16981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool shouldTerminate(WebProcessProxy*); 17081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void disableProcessTermination() { m_processTerminationEnabled = false; } 1722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void enableProcessTermination(); 1732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // Defaults to false. 1752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void setHTTPPipeliningEnabled(bool); 1762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool httpPipeliningEnabled(); 1772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate: 17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebContext(ProcessModel, const String& injectedBundlePath); 18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual Type type() const { return APIType; } 18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void platformInitializeWebProcess(WebProcessCreationParameters&); 1842bde8e466a4451c7319e3a072d118917957d6554Steve Block void platformInvalidateContext(); 1852bde8e466a4451c7319e3a072d118917957d6554Steve Block 18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // History client 18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didNavigateWithNavigationData(uint64_t pageID, const WebNavigationDataStore& store, uint64_t frameID); 18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didPerformClientRedirect(uint64_t pageID, const String& sourceURLString, const String& destinationURLString, uint64_t frameID); 18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didPerformServerRedirect(uint64_t pageID, const String& sourceURLString, const String& destinationURLString, uint64_t frameID); 19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didUpdateHistoryTitle(uint64_t pageID, const String& title, const String& url, uint64_t frameID); 19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Plugins 19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void getPlugins(bool refresh, Vector<WebCore::PluginInfo>& plugins); 19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void getPluginPath(const String& mimeType, const String& urlString, String& pluginPath); 19581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if !ENABLE(PLUGIN_PROCESS) 19681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void didGetSitesWithPluginData(const Vector<String>& sites, uint64_t callbackID); 19781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void didClearPluginSiteData(uint64_t callbackID); 19881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 19981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // Implemented in generated WebContextMessageReceiver.cpp 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didReceiveWebContextMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch CoreIPC::SyncReplyMode didReceiveSyncWebContextMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*); 20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch static void languageChanged(void* context); 20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void languageChanged(); 20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block String databaseDirectory() const; 2082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block String platformDefaultDatabaseDirectory() const; 2092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2102bde8e466a4451c7319e3a072d118917957d6554Steve Block String iconDatabasePath() const; 2112bde8e466a4451c7319e3a072d118917957d6554Steve Block String platformDefaultIconDatabasePath() const; 2122bde8e466a4451c7319e3a072d118917957d6554Steve Block 2132bde8e466a4451c7319e3a072d118917957d6554Steve Block String localStorageDirectory() const; 2142bde8e466a4451c7319e3a072d118917957d6554Steve Block String platformDefaultLocalStorageDirectory() const; 2152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ProcessModel m_processModel; 21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: In the future, this should be one or more WebProcessProxies. 21965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebProcessProxy> m_process; 22065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebPageGroup> m_defaultPageGroup; 22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<APIObject> m_injectedBundleInitializationUserData; 22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch String m_injectedBundlePath; 22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebContextInjectedBundleClient m_injectedBundleClient; 22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebHistoryClient m_historyClient; 22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch PluginInfoStore m_pluginInfoStore; 23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch VisitedLinkProvider m_visitedLinkProvider; 23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 23265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashSet<String> m_schemesToRegisterAsEmptyDocument; 23365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashSet<String> m_schemesToRegisterAsSecure; 23465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashSet<String> m_schemesToSetDomainRelaxationForbiddenFor; 23565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 23665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool m_alwaysUsesComplexTextCodePath; 23765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 23865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch Vector<pair<String, RefPtr<APIObject> > > m_pendingMessagesToPostToInjectedBundle; 23965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch CacheModel m_cacheModel; 24165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebDownloadClient m_downloadClient; 24365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashMap<uint64_t, RefPtr<DownloadProxy> > m_downloads; 24465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool m_memorySamplerEnabled; 24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch double m_memorySamplerInterval; 24765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 24881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebApplicationCacheManagerProxy> m_applicationCacheManagerProxy; 24981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebCookieManagerProxy> m_cookieManagerProxy; 25065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebDatabaseManagerProxy> m_databaseManagerProxy; 25165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch RefPtr<WebGeolocationManagerProxy> m_geolocationManagerProxy; 2522bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<WebIconDatabase> m_iconDatabase; 25381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebKeyValueStorageManagerProxy> m_keyValueStorageManagerProxy; 2542bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<WebMediaCacheManagerProxy> m_mediaCacheManagerProxy; 25581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebPluginSiteDataManager> m_pluginSiteDataManager; 25681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebResourceCacheManagerProxy> m_resourceCacheManagerProxy; 25765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 25865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN) 25965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool m_shouldPaintNativeControls; 2602bde8e466a4451c7319e3a072d118917957d6554Steve Block HTTPCookieAcceptPolicy m_initialHTTPCookieAcceptPolicy; 26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 2622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2632bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC) 2642bde8e466a4451c7319e3a072d118917957d6554Steve Block RetainPtr<CFTypeRef> m_enhancedAccessibilityObserver; 2652bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 2662bde8e466a4451c7319e3a072d118917957d6554Steve Block 2672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block String m_overrideDatabaseDirectory; 2682bde8e466a4451c7319e3a072d118917957d6554Steve Block String m_overrideIconDatabasePath; 2692bde8e466a4451c7319e3a072d118917957d6554Steve Block String m_overrideLocalStorageDirectory; 2702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool m_processTerminationEnabled; 27265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}; 27365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochtemplate<typename U> inline bool WebContext::sendToAllProcesses(const U& message) 2752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 2762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!m_process || !m_process->canSendMessage()) 2772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return false; 2782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return m_process->send(message, 0); 2802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 2812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochtemplate<typename U> bool WebContext::sendToAllProcessesRelaunchingThemIfNecessary(const U& message) 2832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 2842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch relaunchProcessIfNecessary(); 2852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return m_process->send(message, 0); 2872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 2882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit 29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 29165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // WebContext_h 292