⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 130621 in webkit


Ignore:
Timestamp:
Oct 8, 2012, 1:05:26 AM (14 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Don't use the C API internally in WebKitWebContext
​https://bugs.webkit.org/show_bug.cgi?id=96768

Reviewed by Martin Robinson.

Using the C++ classes directly instead of the C API wrappers we
avoid a lot of toImpl/toAPI casts, string conversions and
allocations. The code is also a lot simpler and easier to read.

  • UIProcess/API/gtk/WebKitDownloadClient.cpp:

(didStart):
(didReceiveResponse):
(didReceiveData):
(decideDestinationWithSuggestedFilename):
(didCreateDestination):
(didFail):
(didCancel):
(didFinish):
(attachDownloadClientToContext):

  • UIProcess/API/gtk/WebKitRequestManagerClient.cpp:

(attachRequestManagerClientToContext):

  • UIProcess/API/gtk/WebKitSecurityManager.cpp:

(registerSecurityPolicyForURIScheme):

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(_WebKitWebContextPrivate):
(createDefaultWebContext):
(webkit_web_context_set_cache_model):
(webkit_web_context_get_cache_model):
(webkit_web_context_clear_cache):
(webkit_web_context_download_uri):
(webkit_web_context_get_cookie_manager):
(webkit_web_context_get_favicon_database_directory):
(webkit_web_context_get_favicon_database):
(webkit_web_context_set_additional_plugins_directory):
(webkitWebContextGetPluginThread):
(webkit_web_context_register_uri_scheme):
(webkitWebContextGetOrCreateDownload):
(webkitWebContextRemoveDownload):
(webkitWebContextGetContext):
(webkitWebContextGetRequestManager):

  • UIProcess/API/gtk/WebKitWebContextPrivate.h:
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewConstructed):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r130614 r130621  
     12012-10-08  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Don't use the C API internally in WebKitWebContext
     4        https://bugs.webkit.org/show_bug.cgi?id=96768
     5
     6        Reviewed by Martin Robinson.
     7
     8        Using the C++ classes directly instead of the C API wrappers we
     9        avoid a lot of toImpl/toAPI casts, string conversions and
     10        allocations. The code is also a lot simpler and easier to read.
     11
     12        * UIProcess/API/gtk/WebKitDownloadClient.cpp:
     13        (didStart):
     14        (didReceiveResponse):
     15        (didReceiveData):
     16        (decideDestinationWithSuggestedFilename):
     17        (didCreateDestination):
     18        (didFail):
     19        (didCancel):
     20        (didFinish):
     21        (attachDownloadClientToContext):
     22        * UIProcess/API/gtk/WebKitRequestManagerClient.cpp:
     23        (attachRequestManagerClientToContext):
     24        * UIProcess/API/gtk/WebKitSecurityManager.cpp:
     25        (registerSecurityPolicyForURIScheme):
     26        * UIProcess/API/gtk/WebKitWebContext.cpp:
     27        (_WebKitWebContextPrivate):
     28        (createDefaultWebContext):
     29        (webkit_web_context_set_cache_model):
     30        (webkit_web_context_get_cache_model):
     31        (webkit_web_context_clear_cache):
     32        (webkit_web_context_download_uri):
     33        (webkit_web_context_get_cookie_manager):
     34        (webkit_web_context_get_favicon_database_directory):
     35        (webkit_web_context_get_favicon_database):
     36        (webkit_web_context_set_additional_plugins_directory):
     37        (webkitWebContextGetPluginThread):
     38        (webkit_web_context_register_uri_scheme):
     39        (webkitWebContextGetOrCreateDownload):
     40        (webkitWebContextRemoveDownload):
     41        (webkitWebContextGetContext):
     42        (webkitWebContextGetRequestManager):
     43        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
     44        * UIProcess/API/gtk/WebKitWebView.cpp:
     45        (webkitWebViewConstructed):
     46
    1472012-10-07  Kangil Han  <kangil.han@samsung.com>
    248
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp

    r105708 r130621  
    3535static void didStart(WKContextRef, WKDownloadRef wkDownload, const void* clientInfo)
    3636{
    37     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     37    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    3838    webkitWebContextDownloadStarted(WEBKIT_WEB_CONTEXT(clientInfo), download.get());
    3939}
    … …  
    4141static void didReceiveResponse(WKContextRef, WKDownloadRef wkDownload, WKURLResponseRef wkResponse, const void* clientInfo)
    4242{
    43     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     43    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    4444    if (webkitDownloadIsCancelled(download.get()))
    4545        return;
    … …  
    5151static void didReceiveData(WKContextRef, WKDownloadRef wkDownload, uint64_t length, const void* clientInfo)
    5252{
    53     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     53    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    5454    webkitDownloadNotifyProgress(download.get(), length);
    5555}
    … …  
    5757static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef wkDownload, WKStringRef filename, bool* allowOverwrite, const void* clientInfo)
    5858{
    59     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     59    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    6060    CString destinationURI = webkitDownloadDecideDestinationWithSuggestedFilename(download.get(),
    6161                                                                                  toImpl(filename)->string().utf8());
    … …  
    6565static void didCreateDestination(WKContextRef, WKDownloadRef wkDownload, WKStringRef path, const void* clientInfo)
    6666{
    67     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     67    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    6868    webkitDownloadDestinationCreated(download.get(), toImpl(path)->string().utf8());
    6969}
    … …  
    7171static void didFail(WKContextRef, WKDownloadRef wkDownload, WKErrorRef error, const void *clientInfo)
    7272{
    73     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     73    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    7474    if (webkitDownloadIsCancelled(download.get())) {
    7575        // Cancellation takes precedence over other errors.
    … …  
    7777    } else
    7878        webkitDownloadFailed(download.get(), toImpl(error)->platformError());
    79     webkitWebContextRemoveDownload(wkDownload);
     79    webkitWebContextRemoveDownload(toImpl(wkDownload));
    8080}
    8181
    8282static void didCancel(WKContextRef, WKDownloadRef wkDownload, const void *clientInfo)
    8383{
    84     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     84    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    8585    webkitDownloadCancelled(download.get());
    86     webkitWebContextRemoveDownload(wkDownload);
     86    webkitWebContextRemoveDownload(toImpl(wkDownload));
    8787}
    8888
    8989static void didFinish(WKContextRef wkContext, WKDownloadRef wkDownload, const void *clientInfo)
    9090{
    91     GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload);
     91    GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload));
    9292    webkitDownloadFinished(download.get());
    93     webkitWebContextRemoveDownload(wkDownload);
     93    webkitWebContextRemoveDownload(toImpl(wkDownload));
    9494}
    9595
    … …  
    111111        0, // processDidCrash
    112112    };
    113     WKContextSetDownloadClient(webkitWebContextGetWKContext(webContext), &wkDownloadClient);
     113    WKContextSetDownloadClient(toAPI(webkitWebContextGetContext(webContext)), &wkDownloadClient);
    114114}
    115115
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitRequestManagerClient.cpp

    r130259 r130621  
    4747        didFailToLoadURIRequest
    4848    };
    49     WKSoupRequestManagerSetClient(webkitWebContextGetRequestManager(webContext), &wkRequestManagerClient);
     49    WKSoupRequestManagerSetClient(toAPI(webkitWebContextGetRequestManager(webContext)), &wkRequestManagerClient);
    5050}
    5151
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp

    r128989 r130621  
    7575{
    7676    String urlScheme = String::fromUTF8(scheme);
    77     WebContext* webContext = toImpl(webkitWebContextGetWKContext(manager->priv->webContext));
     77    WebContext* webContext = webkitWebContextGetContext(manager->priv->webContext);
    7878
    7979    // We keep the WebCore::SchemeRegistry of the UI process in sync with the
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp

    r129906 r130621  
    2121#include "WebKitWebContext.h"
    2222
    23 #include "WebContext.h"
    2423#include "WebKitCookieManagerPrivate.h"
    2524#include "WebKitDownloadClient.h"
    … …  
    3433#include "WebKitURISchemeRequestPrivate.h"
    3534#include "WebKitWebContextPrivate.h"
     35#include "WebResourceCacheManagerProxy.h"
    3636#include <WebCore/FileSystem.h>
    3737#include <WebCore/IconDatabase.h>
    … …  
    4444#include <wtf/gobject/GRefPtr.h>
    4545#include <wtf/text/CString.h>
    46 
    47 using namespace WebKit;
    4846
    4947enum {
    … …  
    9694
    9795struct _WebKitWebContextPrivate {
    98     WKRetainPtr<WKContextRef> context;
     96    RefPtr<WebContext> context;
    9997
    10098    GRefPtr<WebKitCookieManager> cookieManager;
    10199    GRefPtr<WebKitFaviconDatabase> faviconDatabase;
    102100    GRefPtr<WebKitSecurityManager> securityManager;
    103     WKRetainPtr<WKSoupRequestManagerRef> requestManager;
     101    RefPtr<WebSoupRequestManagerProxy> requestManager;
    104102    URISchemeHandlerMap uriSchemeHandlers;
    105103    URISchemeRequestMap uriSchemeRequests;
    … …  
    157155{
    158156    static GRefPtr<WebKitWebContext> webContext = adoptGRef(WEBKIT_WEB_CONTEXT(g_object_new(WEBKIT_TYPE_WEB_CONTEXT, NULL)));
    159     webContext->priv->context = WKContextCreate();
    160     webContext->priv->requestManager = WKContextGetSoupRequestManager(webContext->priv->context.get());
    161     WKContextSetCacheModel(webContext->priv->context.get(), kWKCacheModelPrimaryWebBrowser);
     157    WebKitWebContextPrivate* priv = webContext->priv;
     158
     159    priv->context = WebContext::create(String());
     160    priv->requestManager = webContext->priv->context->soupRequestManagerProxy();
     161    priv->context->setCacheModel(CacheModelPrimaryWebBrowser);
     162
    162163    attachDownloadClientToContext(webContext.get());
    163164    attachRequestManagerClientToContext(webContext.get());
     165
    164166#if ENABLE(GEOLOCATION)
    165     WKGeolocationManagerRef wkGeolocationManager = WKContextGetGeolocationManager(webContext->priv->context.get());
    166     webContext->priv->geolocationProvider = WebKitGeolocationProvider::create(wkGeolocationManager);
     167    priv->geolocationProvider = WebKitGeolocationProvider::create(toAPI(priv->context->geolocationManagerProxy()));
    167168#endif
    168169#if ENABLE(SPELLCHECK)
    169     webContext->priv->textChecker = WebKitTextChecker::create();
     170    priv->textChecker = WebKitTextChecker::create();
    170171#endif
    171172    return webContext.get();
    … …  
    211212void webkit_web_context_set_cache_model(WebKitWebContext* context, WebKitCacheModel model)
    212213{
    213     WKCacheModel cacheModel;
     214    CacheModel cacheModel;
    214215
    215216    g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context));
    … …  
    217218    switch (model) {
    218219    case WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER:
    219         cacheModel = kWKCacheModelDocumentViewer;
     220        cacheModel = CacheModelDocumentViewer;
    220221        break;
    221222    case WEBKIT_CACHE_MODEL_WEB_BROWSER:
    222         cacheModel = kWKCacheModelPrimaryWebBrowser;
     223        cacheModel = CacheModelPrimaryWebBrowser;
    223224        break;
    224225    case WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER:
    225         cacheModel = kWKCacheModelDocumentBrowser;
     226        cacheModel = CacheModelDocumentBrowser;
    226227        break;
    227228    default:
    228229        g_assert_not_reached();
    229230    }
    230     WebKitWebContextPrivate* priv = context->priv;
    231     if (cacheModel != WKContextGetCacheModel(priv->context.get()))
    232         WKContextSetCacheModel(priv->context.get(), cacheModel);
     231
     232    if (cacheModel != context->priv->context->cacheModel())
     233        context->priv->context->setCacheModel(cacheModel);
    233234}
    234235
    … …  
    247248    g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), WEBKIT_CACHE_MODEL_WEB_BROWSER);
    248249
    249     WebKitWebContextPrivate* priv = context->priv;
    250     switch (WKContextGetCacheModel(priv->context.get())) {
    251     case kWKCacheModelDocumentViewer:
     250    switch (context->priv->context->cacheModel()) {
     251    case CacheModelDocumentViewer:
    252252        return WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER;
    253     case kWKCacheModelPrimaryWebBrowser:
     253    case CacheModelPrimaryWebBrowser:
    254254        return WEBKIT_CACHE_MODEL_WEB_BROWSER;
    255     case kWKCacheModelDocumentBrowser:
     255    case CacheModelDocumentBrowser:
    256256        return WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER;
    257257    default:
    … …  
    273273    g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context));
    274274
    275     WebKitWebContextPrivate* priv = context->priv;
    276     WKResourceCacheManagerClearCacheForAllOrigins(WKContextGetResourceCacheManager(priv->context.get()), WKResourceCachesToClearAll);
    277 }
    278 
    279 typedef HashMap<WKDownloadRef, GRefPtr<WebKitDownload> > DownloadsMap;
     275    context->priv->context->resourceCacheManagerProxy()->clearCacheForAllOrigins(AllResourceCaches);
     276}
     277
     278typedef HashMap<DownloadProxy*, GRefPtr<WebKitDownload> > DownloadsMap;
    280279
    281280static DownloadsMap& downloadsMap()
    … …  
    300299    g_return_val_if_fail(uri, 0);
    301300
    302     WebKitWebContextPrivate* priv = context->priv;
    303     WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKURLCreateWithUTF8CString(uri));
    304     WKRetainPtr<WKURLRequestRef> wkRequest(AdoptWK, WKURLRequestCreateWithWKURL(wkURL.get()));
    305     WKRetainPtr<WKDownloadRef> wkDownload = WKContextDownloadURLRequest(priv->context.get(), wkRequest.get());
    306     WebKitDownload* download = webkitDownloadCreate(wkDownload.get());
    307     downloadsMap().set(wkDownload.get(), download);
     301    DownloadProxy* downloadProxy = context->priv->context->download(0, WebCore::ResourceRequest(String::fromUTF8(uri)));
     302    WebKitDownload* download = webkitDownloadCreate(toAPI(downloadProxy));
     303    downloadsMap().set(downloadProxy, download);
    308304    return download;
    309305}
    … …  
    323319    WebKitWebContextPrivate* priv = context->priv;
    324320    if (!priv->cookieManager)
    325         priv->cookieManager = adoptGRef(webkitCookieManagerCreate(WKContextGetCookieManager(priv->context.get())));
     321        priv->cookieManager = adoptGRef(webkitCookieManagerCreate(toAPI(priv->context->cookieManagerProxy())));
    326322
    327323    return priv->cookieManager.get();
    … …  
    378374    // Use default if a different path has not been previously set.
    379375    if (priv->faviconDatabasePath.isNull())
    380         priv->faviconDatabasePath = toImpl(priv->context.get())->iconDatabasePath().utf8();
     376        priv->faviconDatabasePath = priv->context->iconDatabasePath().utf8();
    381377
    382378    return priv->faviconDatabasePath.data();
    … …  
    409405
    410406    // Calling the setter in WebContext will cause the icon database to be opened.
    411     WebContext* webContext = toImpl(priv->context.get());
    412     webContext->setIconDatabasePath(WebCore::filenameToString(faviconDatabasePath.get()));
    413     priv->faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(webContext->iconDatabase()));
     407    priv->context->setIconDatabasePath(WebCore::filenameToString(faviconDatabasePath.get()));
     408    priv->faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(priv->context->iconDatabase()));
    414409
    415410    return priv->faviconDatabase.get();
    … …  
    447442    g_return_if_fail(directory);
    448443
    449     toImpl(context->priv->context.get())->setAdditionalPluginsDirectory(WebCore::filenameToString(directory));
     444    context->priv->context->setAdditionalPluginsDirectory(WebCore::filenameToString(directory));
    450445}
    451446
    … …  
    458453{
    459454    GetPluginsAsyncData* data = static_cast<GetPluginsAsyncData*>(g_simple_async_result_get_op_res_gpointer(result));
    460     data->plugins = toImpl(WEBKIT_WEB_CONTEXT(object)->priv->context.get())->pluginInfoStore().plugins();
     455    data->plugins = WEBKIT_WEB_CONTEXT(object)->priv->context->pluginInfoStore().plugins();
    461456}
    462457
    … …  
    565560    RefPtr<WebKitURISchemeHandler> handler = adoptRef(new WebKitURISchemeHandler(callback, userData, destroyNotify));
    566561    context->priv->uriSchemeHandlers.set(String::fromUTF8(scheme), handler.get());
    567     WKRetainPtr<WKStringRef> wkScheme(AdoptWK, WKStringCreateWithUTF8CString(scheme));
    568     WKSoupRequestManagerRegisterURIScheme(context->priv->requestManager.get(), wkScheme.get());
     562    context->priv->requestManager->registerURIScheme(String::fromUTF8(scheme));
    569563}
    570564
    … …  
    680674}
    681675
    682 WebKitDownload* webkitWebContextGetOrCreateDownload(WKDownloadRef wkDownload)
    683 {
    684     GRefPtr<WebKitDownload> download = downloadsMap().get(wkDownload);
     676WebKitDownload* webkitWebContextGetOrCreateDownload(DownloadProxy* downloadProxy)
     677{
     678    GRefPtr<WebKitDownload> download = downloadsMap().get(downloadProxy);
    685679    if (download)
    686680        return download.get();
    687681
    688     download = adoptGRef(webkitDownloadCreate(wkDownload));
    689     downloadsMap().set(wkDownload, download.get());
     682    download = adoptGRef(webkitDownloadCreate(toAPI(downloadProxy)));
     683    downloadsMap().set(downloadProxy, download.get());
    690684    return download.get();
    691685}
    692686
    693 void webkitWebContextRemoveDownload(WKDownloadRef wkDownload)
    694 {
    695     downloadsMap().remove(wkDownload);
     687void webkitWebContextRemoveDownload(DownloadProxy* downloadProxy)
     688{
     689    downloadsMap().remove(downloadProxy);
    696690}
    697691
    … …  
    701695}
    702696
    703 WKContextRef webkitWebContextGetWKContext(WebKitWebContext* context)
     697WebContext* webkitWebContextGetContext(WebKitWebContext* context)
    704698{
    705699    g_assert(WEBKIT_IS_WEB_CONTEXT(context));
    … …  
    708702}
    709703
    710 WKSoupRequestManagerRef webkitWebContextGetRequestManager(WebKitWebContext* context)
     704WebSoupRequestManagerProxy* webkitWebContextGetRequestManager(WebKitWebContext* context)
    711705{
    712706    return context->priv->requestManager.get();
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h

    r119700 r130621  
    2727#define WebKitWebContextPrivate_h
    2828
     29#include "DownloadProxy.h"
     30#include "WebContext.h"
    2931#include "WebKitPrivate.h"
    3032#include "WebKitURISchemeRequest.h"
    3133#include "WebKitWebContext.h"
     34#include "WebSoupRequestManagerProxy.h"
    3235
    33 WKContextRef webkitWebContextGetWKContext(WebKitWebContext*);
    34 WebKitDownload* webkitWebContextGetOrCreateDownload(WKDownloadRef);
    35 void webkitWebContextRemoveDownload(WKDownloadRef);
     36using namespace WebKit;
     37
     38WebContext* webkitWebContextGetContext(WebKitWebContext*);
     39WebKitDownload* webkitWebContextGetOrCreateDownload(DownloadProxy*);
     40void webkitWebContextRemoveDownload(DownloadProxy*);
    3641void webkitWebContextDownloadStarted(WebKitWebContext*, WebKitDownload*);
    37 WKSoupRequestManagerRef webkitWebContextGetRequestManager(WebKitWebContext*);
     42WebSoupRequestManagerProxy* webkitWebContextGetRequestManager(WebKitWebContext*);
    3843void webkitWebContextReceivedURIRequest(WebKitWebContext*, WebKitURISchemeRequest*);
    3944void webkitWebContextDidFailToLoadURIRequest(WebKitWebContext*, uint64_t requestID);
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r130612 r130621  
    399399    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(webView);
    400400
    401     webkitWebViewBaseCreateWebPage(webViewBase, toImpl(webkitWebContextGetWKContext(priv->context)), 0);
     401    webkitWebViewBaseCreateWebPage(webViewBase, webkitWebContextGetContext(priv->context), 0);
    402402
    403403    attachLoaderClientToView(webView);
Note: See TracChangeset for help on using the changeset viewer.