Changeset 98759 in webkit


Ignore:
Timestamp:
Oct 28, 2011, 1:51:52 PM (14 years ago)
Author:
timothy@apple.com
Message:

Support using a different front-end for the Web Inspector in WebKit2.

rdar://problem/10318665
https://webkit.org/b/71089

Reviewed by Sam Weinig.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode): Added webInspectorBasePath and webInspectorLocalizedStringsPath.
(WebKit::WebProcessCreationParameters::decode): Ditto.

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetOverrideWebInspectorBaseDirectory): Added. Calls through to WebContext.
(WKContextSetOverrideWebInspectorPagePath): Ditto.
(WKContextSetOverrideWebInspectorLocalizedStringsPath): Ditto.

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/WebContext.cpp:

(WebKit::WebContext::ensureWebProcess): Set webInspectorBasePath and webInspectorLocalizedStringsPath.

  • UIProcess/WebContext.h:

(WebKit::WebContext::overrideWebInspectorBaseDirectory): Added.
(WebKit::WebContext::setOverrideWebInspectorBaseDirectory): Added.
(WebKit::WebContext::overrideWebInspectorPagePath): Added.
(WebKit::WebContext::setOverrideWebInspectorPagePath): Added.
(WebKit::WebContext::setOverrideWebInspectorLocalizedStringsPath): Added.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::inspectorPageURL): Use WebContext::overrideWebInspectorPagePath if set.
(WebKit::WebInspectorProxy::inspectorBaseURL): Use WebContext::overrideWebInspectorBaseDirectory if set.

  • WebProcess/WebPage/WebInspector.h:
  • WebProcess/WebPage/mac/WebInspectorMac.mm:

(WebKit::globalInspectorLocalizedStringsURL): Added. Static storage for the setting.
(WebKit::WebInspector::setLocalizedStringsPath): Added. Set globalInspectorLocalizedStringsURL.
(WebKit::WebInspector::localizedStringsURL): Return globalInspectorLocalizedStringsURL.

  • WebProcess/com.apple.WebProcess.sb: Added read-only subpath for WEBKIT_WEB_INSPECTOR_DIR.
  • WebProcess/mac/WebProcessMac.mm:

(WebKit::appendReadonlySandboxDirectory): Check path for empty to prevent an exception when
calling through to fileSystemRepresentation.
(WebKit::initializeSandbox): Added WEBKIT_WEB_INSPECTOR_DIR parameter.
(WebKit::WebProcess::platformInitializeWebProcess): Call WebInspector::setLocalizedStringsPath.

Location:
trunk/Source/WebKit2
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r98756 r98759  
     12011-10-28  Timothy Hatcher  <timothy@apple.com>
     2
     3        Support using a different front-end for the Web Inspector in WebKit2.
     4
     5        rdar://problem/10318665
     6        https://webkit.org/b/71089
     7
     8        Reviewed by Sam Weinig.
     9
     10        * Shared/WebProcessCreationParameters.cpp:
     11        (WebKit::WebProcessCreationParameters::encode): Added webInspectorBasePath and webInspectorLocalizedStringsPath.
     12        (WebKit::WebProcessCreationParameters::decode): Ditto.
     13        * Shared/WebProcessCreationParameters.h:
     14        * UIProcess/API/C/WKContext.cpp:
     15        (WKContextSetOverrideWebInspectorBaseDirectory): Added. Calls through to WebContext.
     16        (WKContextSetOverrideWebInspectorPagePath): Ditto.
     17        (WKContextSetOverrideWebInspectorLocalizedStringsPath): Ditto.
     18        * UIProcess/API/C/WKContextPrivate.h:
     19        * UIProcess/WebContext.cpp:
     20        (WebKit::WebContext::ensureWebProcess): Set webInspectorBasePath and webInspectorLocalizedStringsPath.
     21        * UIProcess/WebContext.h:
     22        (WebKit::WebContext::overrideWebInspectorBaseDirectory): Added.
     23        (WebKit::WebContext::setOverrideWebInspectorBaseDirectory): Added.
     24        (WebKit::WebContext::overrideWebInspectorPagePath): Added.
     25        (WebKit::WebContext::setOverrideWebInspectorPagePath): Added.
     26        (WebKit::WebContext::setOverrideWebInspectorLocalizedStringsPath): Added.
     27        * UIProcess/mac/WebInspectorProxyMac.mm:
     28        (WebKit::WebInspectorProxy::inspectorPageURL): Use WebContext::overrideWebInspectorPagePath if set.
     29        (WebKit::WebInspectorProxy::inspectorBaseURL): Use WebContext::overrideWebInspectorBaseDirectory if set.
     30        * WebProcess/WebPage/WebInspector.h:
     31        * WebProcess/WebPage/mac/WebInspectorMac.mm:
     32        (WebKit::globalInspectorLocalizedStringsURL): Added. Static storage for the setting.
     33        (WebKit::WebInspector::setLocalizedStringsPath): Added. Set globalInspectorLocalizedStringsURL.
     34        (WebKit::WebInspector::localizedStringsURL): Return globalInspectorLocalizedStringsURL.
     35        * WebProcess/com.apple.WebProcess.sb: Added read-only subpath for WEBKIT_WEB_INSPECTOR_DIR.
     36        * WebProcess/mac/WebProcessMac.mm:
     37        (WebKit::appendReadonlySandboxDirectory): Check path for empty to prevent an exception when
     38        calling through to fileSystemRepresentation.
     39        (WebKit::initializeSandbox): Added WEBKIT_WEB_INSPECTOR_DIR parameter.
     40        (WebKit::WebProcess::platformInitializeWebProcess): Call WebInspector::setLocalizedStringsPath.
     41
    1422011-10-28  Alexey Proskuryakov  <ap@apple.com>
    243
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r96770 r98759  
    5555    encoder->encode(databaseDirectory);
    5656    encoder->encode(localStorageDirectory);
     57    encoder->encode(webInspectorLocalizedStringsPath);
    5758    encoder->encode(urlSchemesRegistererdAsEmptyDocument);
    5859    encoder->encode(urlSchemesRegisteredAsSecure);
     
    8182    encoder->encode(acceleratedCompositingPort);
    8283    encoder->encode(uiProcessBundleResourcePath);
     84    encoder->encode(webInspectorBaseDirectory);
    8385#elif PLATFORM(WIN)
    8486    encoder->encode(shouldPaintNativeControls);
     
    110112        return false;
    111113    if (!decoder->decode(parameters.localStorageDirectory))
     114        return false;
     115    if (!decoder->decode(parameters.webInspectorLocalizedStringsPath))
    112116        return false;
    113117    if (!decoder->decode(parameters.urlSchemesRegistererdAsEmptyDocument))
     
    160164    if (!decoder->decode(parameters.uiProcessBundleResourcePath))
    161165        return false;
     166    if (!decoder->decode(parameters.webInspectorBaseDirectory))
     167        return false;
    162168#elif PLATFORM(WIN)
    163169    if (!decoder->decode(parameters.shouldPaintNativeControls))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r96770 r98759  
    5757    String databaseDirectory;
    5858    String localStorageDirectory;
     59    String webInspectorLocalizedStringsPath;
     60
    5961    Vector<String> urlSchemesRegistererdAsEmptyDocument;
    6062    Vector<String> urlSchemesRegisteredAsSecure;
     
    100102    String uiProcessBundleResourcePath;
    101103
     104    String webInspectorBaseDirectory;
     105
    102106#elif PLATFORM(WIN)
    103107    String cfURLCachePath;
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r96784 r98759  
    226226}
    227227
     228void WKContextSetOverrideWebInspectorBaseDirectory(WKContextRef contextRef, WKStringRef webInspectorBaseDirectory)
     229{
     230    toImpl(contextRef)->setOverrideWebInspectorBaseDirectory(toImpl(webInspectorBaseDirectory)->string());
     231}
     232
     233void WKContextSetOverrideWebInspectorPagePath(WKContextRef contextRef, WKStringRef webInspectorPagePath)
     234{
     235    toImpl(contextRef)->setOverrideWebInspectorPagePath(toImpl(webInspectorPagePath)->string());
     236}
     237
     238void WKContextSetOverrideWebInspectorLocalizedStringsPath(WKContextRef contextRef, WKStringRef webInspectorLocalizedStringsPath)
     239{
     240    toImpl(contextRef)->setOverrideWebInspectorLocalizedStringsPath(toImpl(webInspectorLocalizedStringsPath)->string());
     241}
     242
    228243void WKContextDisableProcessTermination(WKContextRef contextRef)
    229244{
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r96770 r98759  
    6363WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
    6464WK_EXPORT void WKContextSetLocalStorageDirectory(WKContextRef context, WKStringRef localStorageDirectory);
     65WK_EXPORT void WKContextSetOverrideWebInspectorBaseDirectory(WKContextRef context, WKStringRef webInspectorBaseDirectory);
     66WK_EXPORT void WKContextSetOverrideWebInspectorPagePath(WKContextRef context, WKStringRef webInspectorPagePath);
     67WK_EXPORT void WKContextSetOverrideWebInspectorLocalizedStringsPath(WKContextRef context, WKStringRef webInspectorLocalizedStringsPath);
    6568
    6669// FIXME: This is a workaround for testing purposes only and should be removed once a better
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r98513 r98759  
    245245    parameters.databaseDirectory = databaseDirectory();
    246246    parameters.localStorageDirectory = localStorageDirectory();
     247    parameters.webInspectorLocalizedStringsPath = m_overrideWebInspectorLocalizedStringsPath;
     248
    247249#if PLATFORM(MAC)
     250    parameters.webInspectorBaseDirectory = m_overrideWebInspectorBaseDirectory;
    248251    parameters.presenterApplicationPid = getpid();
    249252#endif
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r98513 r98759  
    170170    void setLocalStorageDirectory(const String& dir) { m_overrideLocalStorageDirectory = dir; }
    171171
     172    String overrideWebInspectorBaseDirectory() const { return m_overrideWebInspectorBaseDirectory; }
     173    void setOverrideWebInspectorBaseDirectory(const String& path) { m_overrideWebInspectorBaseDirectory = path; }
     174
     175    String overrideWebInspectorPagePath() const { return m_overrideWebInspectorPagePath; }
     176    void setOverrideWebInspectorPagePath(const String& path) { m_overrideWebInspectorPagePath = path; }
     177
     178    void setOverrideWebInspectorLocalizedStringsPath(const String& path) { m_overrideWebInspectorLocalizedStringsPath = path; }
     179
    172180    void ensureWebProcess();
    173181    void warmInitialProcess();
     
    280288    RetainPtr<CFTypeRef> m_enhancedAccessibilityObserver;
    281289#endif
    282    
     290
    283291    String m_overrideDatabaseDirectory;
    284292    String m_overrideIconDatabasePath;
    285293    String m_overrideLocalStorageDirectory;
     294    String m_overrideWebInspectorBaseDirectory;
     295    String m_overrideWebInspectorPagePath;
     296    String m_overrideWebInspectorLocalizedStringsPath;
    286297
    287298    bool m_processTerminationEnabled;
  • trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm

    r97819 r98759  
    3030
    3131#import "WKAPICast.h"
     32#import "WebContext.h"
    3233#import "WKInspectorMac.h"
    3334#import "WKViewPrivate.h"
     
    249250String WebInspectorProxy::inspectorPageURL() const
    250251{
    251     NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.WebCore"] pathForResource:@"inspector" ofType:@"html" inDirectory:@"inspector"];
    252     ASSERT(path);
     252    NSString *path = page()->process()->context()->overrideWebInspectorPagePath();
     253    if (![path length])
     254        path = [[NSBundle bundleWithIdentifier:@"com.apple.WebCore"] pathForResource:@"inspector" ofType:@"html" inDirectory:@"inspector"];
     255
     256    ASSERT([path length]);
    253257
    254258    return [[NSURL fileURLWithPath:path] absoluteString];
     
    257261String WebInspectorProxy::inspectorBaseURL() const
    258262{
    259     // Web Inspector uses localized strings, so it's not contained within inspector directory.
    260     NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.WebCore"] resourcePath];
    261     ASSERT(path);
     263    NSString *path = page()->process()->context()->overrideWebInspectorBaseDirectory();
     264    if (![path length]) {
     265        // WebCore's Web Inspector uses localized strings, which are not contained within inspector directory.
     266        path = [[NSBundle bundleWithIdentifier:@"com.apple.WebCore"] resourcePath];
     267    }
     268
     269    ASSERT([path length]);
    262270
    263271    return [[NSURL fileURLWithPath:path] absoluteString];
  • trunk/Source/WebKit2/WebProcess/WebPage/WebInspector.h

    r95901 r98759  
    6161    void stopPageProfiling();
    6262
     63#if PLATFORM(MAC)
     64    static void setLocalizedStringsPath(const String&);
     65#endif
     66
    6367private:
    6468    friend class WebInspectorClient;
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/WebInspectorMac.mm

    r95901 r98759  
    3131namespace WebKit {
    3232
     33static String& globalInspectorLocalizedStringsURL()
     34{
     35    DEFINE_STATIC_LOCAL(String, inspectorLocalizedStringsURL, ());
     36    return inspectorLocalizedStringsURL;
     37}
     38
     39void WebInspector::setLocalizedStringsPath(const String& path)
     40{
     41    if (!path.isEmpty())
     42        globalInspectorLocalizedStringsURL() = [[NSURL fileURLWithPath:path] absoluteString];
     43    else
     44        globalInspectorLocalizedStringsURL() = String();
     45}
     46
    3347String WebInspector::localizedStringsURL() const
    3448{
    35     NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.WebCore"] pathForResource:@"localizedStrings" ofType:@"js"];
    36     if (path)
    37         return [[NSURL fileURLWithPath:path] absoluteString];
    38     return String();
     49    return globalInspectorLocalizedStringsURL();
    3950}
    4051
  • trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb

    r95113 r98759  
    121121(if (positive? (string-length (param "WEBKIT_APPLICATION_CACHE_DIR")))
    122122    (allow file* (subpath (param "WEBKIT_APPLICATION_CACHE_DIR"))))
     123
     124;; The Web Inspector directory.
     125(if (positive? (string-length (param "WEBKIT_WEB_INSPECTOR_DIR")))
     126    (allow file-read* (subpath (param "WEBKIT_WEB_INSPECTOR_DIR"))))
    123127
    124128;; The NSURLCache directory.
  • trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm

    r95901 r98759  
    2929#import "SandboxExtension.h"
    3030#import "WKFullKeyboardAccessWatcher.h"
     31#import "WebInspector.h"
    3132#import "WebPage.h"
    3233#import "WebProcessCreationParameters.h"
     
    160161static void appendReadonlySandboxDirectory(Vector<const char*>& vector, const char* name, NSString *path)
    161162{
    162     appendSandboxParameterPathInternal(vector, name, [(NSString *)path fileSystemRepresentation]);
     163    appendSandboxParameterPathInternal(vector, name, [path length] ? [(NSString *)path fileSystemRepresentation] : "");
    163164}
    164165
     
    189190    appendReadonlySandboxDirectory(sandboxParameters, "WEBKIT2_FRAMEWORK_DIR", [[[NSBundle bundleForClass:NSClassFromString(@"WKView")] bundlePath] stringByDeletingLastPathComponent]);
    190191    appendReadonlySandboxDirectory(sandboxParameters, "UI_PROCESS_BUNDLE_RESOURCE_DIR", parameters.uiProcessBundleResourcePath);
     192    appendReadonlySandboxDirectory(sandboxParameters, "WEBKIT_WEB_INSPECTOR_DIR", parameters.webInspectorBaseDirectory);
    191193
    192194    // These are read-write getconf paths.
     
    246248    }
    247249
     250    WebInspector::setLocalizedStringsPath(parameters.webInspectorLocalizedStringsPath);
     251
    248252    m_compositingRenderServerPort = parameters.acceleratedCompositingPort.port();
    249253
Note: See TracChangeset for help on using the changeset viewer.