Changeset 159631 in webkit


Ignore:
Timestamp:
Nov 21, 2013 9:41:39 AM (10 years ago)
Author:
mitz@apple.com
Message:

Reverted r159603, as it appears to have caused Safari’s Web processes to crash on launch.

Requested by Sam Weinig.

  • Scripts/webkit2/messages.py:

(struct_or_class):

  • Shared/UserMessageCoders.h:

(WebKit::UserMessageEncoder::baseEncode):

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/mac/ObjCObjectGraphCoders.h:
  • Shared/mac/ObjCObjectGraphCoders.mm:

(WebKit::ObjCObjectGraphEncoder::baseEncode):
(WebKit::WebContextObjCObjectGraphEncoderImpl::WebContextObjCObjectGraphEncoderImpl):
(WebKit::WebContextObjCObjectGraphEncoderImpl::encode):
(WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode):
(WebKit::WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder):
(WebKit::WebContextObjCObjectGraphEncoder::encode):

  • UIProcess/WebConnectionToWebProcess.cpp:

(WebKit::WebConnectionToWebProcess::encodeMessageBody):

  • UIProcess/WebContext.cpp:

(WebKit::WebContext::createNewWebProcess):
(WebKit::WebContext::createWebPage):
(WebKit::WebContext::postMessageToInjectedBundle):
(WebKit::WebContext::didReceiveSyncMessage):

  • UIProcess/WebContextUserMessageCoders.h:

(WebKit::WebContextUserMessageEncoder::WebContextUserMessageEncoder):
(WebKit::WebContextUserMessageEncoder::encode):
(WebKit::WebContextUserMessageDecoder::decode):

  • UIProcess/WebPageGroup.cpp:
  • UIProcess/WebPageGroup.h:

(WebKit::WebPageGroup::sendToAllProcessesInGroup):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::create):
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::loadURL):
(WebKit::WebPageProxy::loadURLRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadHTMLString):
(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::loadPlainTextString):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::postMessageToInjectedBundle):
(WebKit::WebPageProxy::initializeCreationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::disconnect):
(WebKit::WebProcessProxy::createWebPage):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:

(WebKit::InjectedBundleUserMessageEncoder::encode):
(WebKit::InjectedBundleUserMessageDecoder::decode):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::webPageGroup):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
Location:
trunk/Source/WebKit2
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r159611 r159631  
     12013-11-21  Dan Bernstein  <mitz@apple.com>
     2
     3        Reverted r159603, as it appears to have caused Safari’s Web processes to crash on launch.
     4
     5        Requested by Sam Weinig.
     6
     7        * Scripts/webkit2/messages.py:
     8        (struct_or_class):
     9        * Shared/UserMessageCoders.h:
     10        (WebKit::UserMessageEncoder::baseEncode):
     11        * Shared/WebPageCreationParameters.cpp:
     12        (WebKit::WebPageCreationParameters::encode):
     13        (WebKit::WebPageCreationParameters::decode):
     14        * Shared/WebPageCreationParameters.h:
     15        * Shared/mac/ObjCObjectGraphCoders.h:
     16        * Shared/mac/ObjCObjectGraphCoders.mm:
     17        (WebKit::ObjCObjectGraphEncoder::baseEncode):
     18        (WebKit::WebContextObjCObjectGraphEncoderImpl::WebContextObjCObjectGraphEncoderImpl):
     19        (WebKit::WebContextObjCObjectGraphEncoderImpl::encode):
     20        (WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode):
     21        (WebKit::WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder):
     22        (WebKit::WebContextObjCObjectGraphEncoder::encode):
     23        * UIProcess/WebConnectionToWebProcess.cpp:
     24        (WebKit::WebConnectionToWebProcess::encodeMessageBody):
     25        * UIProcess/WebContext.cpp:
     26        (WebKit::WebContext::createNewWebProcess):
     27        (WebKit::WebContext::createWebPage):
     28        (WebKit::WebContext::postMessageToInjectedBundle):
     29        (WebKit::WebContext::didReceiveSyncMessage):
     30        * UIProcess/WebContextUserMessageCoders.h:
     31        (WebKit::WebContextUserMessageEncoder::WebContextUserMessageEncoder):
     32        (WebKit::WebContextUserMessageEncoder::encode):
     33        (WebKit::WebContextUserMessageDecoder::decode):
     34        * UIProcess/WebPageGroup.cpp:
     35        * UIProcess/WebPageGroup.h:
     36        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
     37        * UIProcess/WebPageProxy.cpp:
     38        (WebKit::WebPageProxy::create):
     39        (WebKit::WebPageProxy::WebPageProxy):
     40        (WebKit::WebPageProxy::initializeWebPage):
     41        (WebKit::WebPageProxy::loadURL):
     42        (WebKit::WebPageProxy::loadURLRequest):
     43        (WebKit::WebPageProxy::loadFile):
     44        (WebKit::WebPageProxy::loadData):
     45        (WebKit::WebPageProxy::loadHTMLString):
     46        (WebKit::WebPageProxy::loadAlternateHTMLString):
     47        (WebKit::WebPageProxy::loadPlainTextString):
     48        (WebKit::WebPageProxy::loadWebArchiveData):
     49        (WebKit::WebPageProxy::postMessageToInjectedBundle):
     50        (WebKit::WebPageProxy::initializeCreationParameters):
     51        * UIProcess/WebPageProxy.h:
     52        * UIProcess/WebProcessProxy.cpp:
     53        (WebKit::WebProcessProxy::disconnect):
     54        (WebKit::WebProcessProxy::createWebPage):
     55        * UIProcess/WebProcessProxy.h:
     56        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
     57        (WebKit::InjectedBundleUserMessageEncoder::encode):
     58        (WebKit::InjectedBundleUserMessageDecoder::decode):
     59        * WebProcess/WebPage/WebPage.cpp:
     60        (WebKit::WebPage::WebPage):
     61        * WebProcess/WebProcess.cpp:
     62        (WebKit::WebProcess::webPageGroup):
     63        * WebProcess/WebProcess.h:
     64        * WebProcess/WebProcess.messages.in:
     65
    1662013-11-20  Brady Eidson  <beidson@apple.com>
    267
  • trunk/Source/WebKit2/Scripts/webkit2/messages.py

    r159611 r159631  
    215215        'WebKit::WebNavigationDataStore',
    216216        'WebKit::WebPageCreationParameters',
    217         'WebKit::WebPageGroupData',
    218217        'WebKit::WebPreferencesStore',
    219218        'WebKit::WebProcessCreationParameters',
  • trunk/Source/WebKit2/Shared/UserMessageCoders.h

    r159603 r159631  
    7272class UserMessageEncoder {
    7373public:
    74     bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder, API::Object::Type& type) const
     74    bool baseEncode(CoreIPC::ArgumentEncoder& encoder, API::Object::Type& type) const
    7575    {
    7676        if (!m_root) {
     
    8787            encoder << static_cast<uint64_t>(array->size());
    8888            for (size_t i = 0; i < array->size(); ++i)
    89                 encoder << Owner(coder, array->at(i));
     89                encoder << Owner(array->at(i));
    9090            return true;
    9191        }
     
    9999            for (; it != end; ++it) {
    100100                encoder << it->key;
    101                 encoder << Owner(coder, it->value.get());
     101                encoder << Owner(it->value.get());
    102102            }
    103103            return true;
     
    150150        case API::Object::Type::RenderLayer: {
    151151            WebRenderLayer* renderLayer = static_cast<WebRenderLayer*>(m_root);
    152             encoder << Owner(coder, renderLayer->renderer());
     152            encoder << Owner(renderLayer->renderer());
    153153            encoder << renderLayer->isReflection();
    154154            encoder << renderLayer->isClipping();
     
    156156            encoder << static_cast<uint32_t>(renderLayer->compositingLayerType());
    157157            encoder << renderLayer->absoluteBoundingBox();
    158             encoder << Owner(coder, renderLayer->negativeZOrderList());
    159             encoder << Owner(coder, renderLayer->normalFlowList());
    160             encoder << Owner(coder, renderLayer->positiveZOrderList());
     158            encoder << Owner(renderLayer->negativeZOrderList());
     159            encoder << Owner(renderLayer->normalFlowList());
     160            encoder << Owner(renderLayer->positiveZOrderList());
    161161            return true;
    162162        }
     
    166166            encoder << renderObject->elementTagName();
    167167            encoder << renderObject->elementID();
    168             encoder << Owner(coder, renderObject->elementClassNames());
     168            encoder << Owner(renderObject->elementClassNames());
    169169            encoder << renderObject->absolutePosition();
    170170            encoder << renderObject->frameRect();
    171             encoder << Owner(coder, renderObject->children());
     171            encoder << Owner(renderObject->children());
    172172            return true;
    173173        }
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp

    r159603 r159631  
    3838    encoder << store;
    3939    encoder.encodeEnum(drawingAreaType);
    40     encoder << pageGroupID;
     40    encoder << pageGroupData;
    4141    encoder << drawsBackground;
    4242    encoder << drawsTransparentBackground;
     
    7777    if (!decoder.decodeEnum(parameters.drawingAreaType))
    7878        return false;
    79     if (!decoder.decode(parameters.pageGroupID))
     79    if (!decoder.decode(parameters.pageGroupData))
    8080        return false;
    8181    if (!decoder.decode(parameters.drawsBackground))
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.h

    r159603 r159631  
    6161    WebPreferencesStore store;
    6262    DrawingAreaType drawingAreaType;
    63     uint64_t pageGroupID;
     63    WebPageGroupData pageGroupData;
    6464
    6565    bool drawsBackground;
  • trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.h

    r159603 r159631  
    3939class WebContextObjCObjectGraphEncoder {
    4040public:
    41     explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph*, WebProcessProxy*);
     41    explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph*);
    4242    void encode(CoreIPC::ArgumentEncoder&) const;
    4343
    4444private:
    4545    ObjCObjectGraph* m_objectGraph;
    46     WebProcessProxy* m_process;
    4746};
    4847
  • trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm

    r159603 r159631  
    9393class ObjCObjectGraphEncoder {
    9494public:
    95     bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder, WebKitNSType& type) const
     95    bool baseEncode(CoreIPC::ArgumentEncoder& encoder, WebKitNSType& type) const
    9696    {
    9797        if (!m_root) {
     
    119119
    120120            for (NSUInteger i = 0; i < size; ++i)
    121                 encoder << Owner(coder, [array objectAtIndex:i]);
     121                encoder << Owner([array objectAtIndex:i]);
    122122            return true;
    123123        }
     
    131131            NSArray *values = [dictionary allValues];
    132132            for (NSUInteger i = 0; i < size; ++i) {
    133                 encoder << Owner(coder, [keys objectAtIndex:i]);
    134                 encoder << Owner(coder, [values objectAtIndex:i]);
     133                encoder << Owner([keys objectAtIndex:i]);
     134                encoder << Owner([values objectAtIndex:i]);
    135135            }
    136136
     
    270270    typedef ObjCObjectGraphEncoder<WebContextObjCObjectGraphEncoderImpl> Base;
    271271
    272     explicit WebContextObjCObjectGraphEncoderImpl(id root, WebProcessProxy* process)
     272    explicit WebContextObjCObjectGraphEncoderImpl(id root)
    273273        : Base(root)
    274         , m_process(process)
    275     {
    276     }
    277 
    278     WebContextObjCObjectGraphEncoderImpl(const WebContextObjCObjectGraphEncoderImpl& userMessageEncoder, id root)
    279         : Base(root)
    280         , m_process(userMessageEncoder.m_process)
    281274    {
    282275    }
     
    285278    {
    286279        WebKitNSType type = NullType;
    287         if (baseEncode(encoder, *this, type))
     280        if (baseEncode(encoder, type))
    288281            return;
    289282
     
    298291        case WKTypeRefWrapperType: {
    299292            WKTypeRefWrapper *wrapper = static_cast<WKTypeRefWrapper *>(m_root);
    300             encoder << WebContextUserMessageEncoder(toImpl(wrapper.object), m_process);
     293            encoder << WebContextUserMessageEncoder(toImpl(wrapper.object));
    301294            break;
    302295        }
     
    307300        }
    308301    }
    309 
    310 private:
    311     WebProcessProxy* m_process;
    312302};
    313303
     
    389379    }
    390380
    391     explicit InjectedBundleObjCObjectGraphEncoderImpl(const InjectedBundleObjCObjectGraphEncoderImpl&, id root)
    392         : Base(root)
    393     {
    394     }
    395 
    396381    void encode(CoreIPC::ArgumentEncoder& encoder) const
    397382    {
    398383        WebKitNSType type = NullType;
    399         if (baseEncode(encoder, *this, type))
     384        if (baseEncode(encoder, type))
    400385            return;
    401386
     
    487472// Adaptors
    488473
    489 WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph, WebProcessProxy* process)
     474WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph)
    490475    : m_objectGraph(objectGraph)
    491     , m_process(process)
    492476{
    493477}
     
    495479void WebContextObjCObjectGraphEncoder::encode(CoreIPC::ArgumentEncoder& encoder) const
    496480{
    497     encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject(), m_process);
     481    encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject());
    498482}
    499483
  • trunk/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp

    r159603 r159631  
    5353void WebConnectionToWebProcess::encodeMessageBody(CoreIPC::ArgumentEncoder& encoder, API::Object* messageBody)
    5454{
    55     encoder << WebContextUserMessageEncoder(messageBody, m_process);
     55    encoder << WebContextUserMessageEncoder(messageBody);
    5656}
    5757
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r159603 r159631  
    574574    if (!injectedBundleInitializationUserData)
    575575        injectedBundleInitializationUserData = m_injectedBundleInitializationUserData;
    576     process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get(), process.get())), 0);
     576    process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get())), 0);
    577577
    578578    if (WebPreferences::anyPageGroupsAreUsingPrivateBrowsing())
     
    588588
    589589            messageData.encode(message.first);
    590             messageData.encode(WebContextUserMessageEncoder(message.second.get(), process.get()));
     590            messageData.encode(WebContextUserMessageEncoder(message.second.get()));
    591591            process->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0);
    592592        }
     
    739739        pageGroup = m_defaultPageGroup.get();
    740740
    741     return process->createWebPage(pageClient, *pageGroup);
     741    return process->createWebPage(pageClient, this, pageGroup);
    742742}
    743743
     
    769769    // FIXME: Return early if the message body contains any references to WKPageRefs/WKFrameRefs etc. since they're local to a process.
    770770
    771     for (size_t i = 0; i < m_processes.size(); ++i) {
    772         CoreIPC::ArgumentEncoder messageData;
    773         messageData.encode(messageName);
    774         messageData.encode(WebContextUserMessageEncoder(messageBody, m_processes[i].get()));
    775 
     771    CoreIPC::ArgumentEncoder messageData;
     772    messageData.encode(messageName);
     773    messageData.encode(WebContextUserMessageEncoder(messageBody));
     774
     775    for (size_t i = 0; i < m_processes.size(); ++i)
    776776        m_processes[i]->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0);
    777     }
    778777}
    779778
     
    973972        RefPtr<API::Object> returnData;
    974973        didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody.get(), returnData);
    975         replyEncoder->encode(WebContextUserMessageEncoder(returnData.get(), WebProcessProxy::fromConnection(connection)));
     974        replyEncoder->encode(WebContextUserMessageEncoder(returnData.get()));
    976975        return;
    977976    }
  • trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h

    r159603 r159631  
    4646    typedef UserMessageEncoder<WebContextUserMessageEncoder> Base;
    4747
    48     explicit WebContextUserMessageEncoder(API::Object* root, WebProcessProxy* process)
     48    explicit WebContextUserMessageEncoder(API::Object* root)
    4949        : Base(root)
    50         , m_process(process)
    51     {
    52     }
    53 
    54     WebContextUserMessageEncoder(const WebContextUserMessageEncoder& userMessageEncoder, API::Object* root)
    55         : Base(root)
    56         , m_process(userMessageEncoder.m_process)
    5750    {
    5851    }
     
    6154    {
    6255        API::Object::Type type = API::Object::Type::Null;
    63         if (baseEncode(encoder, *this, type))
     56        if (baseEncode(encoder, type))
    6457            return;
    6558
     
    7770        case API::Object::Type::PageGroup: {
    7871            WebPageGroup* pageGroup = static_cast<WebPageGroup*>(m_root);
    79             if (pageGroup->addProcess(*m_process)) {
    80                 m_process->addWebPageGroup(*pageGroup);
    81            
    82                 encoder << true;
    83                 encoder << pageGroup->data();
    84             } else {
    85                 encoder << false;
    86                 encoder << pageGroup->pageGroupID();
    87             }
     72            encoder << pageGroup->data();
    8873            break;
    8974        }
     
    9176        case API::Object::Type::ObjCObjectGraph: {
    9277            ObjCObjectGraph* objectGraph = static_cast<ObjCObjectGraph*>(m_root);
    93             encoder << WebContextObjCObjectGraphEncoder(objectGraph, m_process);
     78            encoder << WebContextObjCObjectGraphEncoder(objectGraph);
    9479            break;
    9580        }
     
    10085        }
    10186    }
    102 
    103 private:
    104     WebProcessProxy* m_process;
    10587};
    10688
     
    154136            if (!decoder.decode(pageGroupID))
    155137                return false;
    156             coder.m_root = coder.m_process->webPageGroup(pageGroupID);
     138            coder.m_root = WebPageGroup::get(pageGroupID);
    157139            break;
    158140        }
  • trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp

    r159603 r159631  
    3131#include "WebPageProxy.h"
    3232#include "WebPreferences.h"
    33 #include "WebProcessMessages.h"
    3433#include <wtf/HashMap.h>
    3534#include <wtf/text/StringConcatenate.h>
     
    193192}
    194193
    195 bool WebPageGroup::addProcess(WebProcessProxy& process)
    196 {
    197     return m_processes.add(&process).isNewEntry;
    198 }
    199 
    200 void WebPageGroup::disconnectProcess(WebProcessProxy& process)
    201 {
    202     m_processes.remove(&process);
    203 }
    204 
    205194} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/WebPageGroup.h

    r159603 r159631  
    3636namespace WebKit {
    3737
     38class WebPreferences;
    3839class WebPageProxy;
    39 class WebPreferences;
    4040
    4141class WebPageGroup : public API::TypedObject<API::Object::Type::PageGroup> {
     
    5757    WebPreferences* preferences() const;
    5858    void preferencesDidChange();
    59 
     59   
    6060    void addUserStyleSheet(const String& source, const String& baseURL, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserStyleLevel);
    6161    void addUserScript(const String& source, const String& baseURL, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserScriptInjectionTime);
     
    6363    void removeAllUserScripts();
    6464    void removeAllUserContent();
    65 
    66     bool addProcess(WebProcessProxy&);
    67     void disconnectProcess(WebProcessProxy&);
    6865
    6966private:
     
    7572    mutable RefPtr<WebPreferences> m_preferences;
    7673    HashSet<WebPageProxy*> m_pages;
    77     HashSet<WebProcessProxy*> m_processes;
    7874};
    7975   
     
    8177void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID)
    8278{
    83     for (auto webProcessProxy : m_processes) {
     79    HashSet<WebProcessProxy*> processesSeen;
     80
     81    for (WebPageProxy* webPageProxy : m_pages) {
     82        WebProcessProxy* webProcessProxy = webPageProxy->process();
     83        ASSERT(webProcessProxy);
     84
     85        if (!processesSeen.add(webProcessProxy).isNewEntry)
     86            continue;
     87
    8488        if (webProcessProxy->canSendMessage())
    8589            webProcessProxy->send(T(message), destinationID);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r159603 r159631  
    223223#endif // !LOG_DISABLED
    224224
    225 PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup& pageGroup, uint64_t pageID)
     225PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID)
    226226{
    227227    return adoptRef(new WebPageProxy(pageClient, process, pageGroup, pageID));
    228228}
    229229
    230 WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup& pageGroup, uint64_t pageID)
     230WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID)
    231231    : m_pageClient(pageClient)
    232232    , m_process(process)
    233     , m_pageGroup(&pageGroup)
     233    , m_pageGroup(pageGroup)
    234234    , m_mainFrame(0)
    235235    , m_userAgent(standardUserAgent())
     
    525525#endif
    526526
    527     if (m_pageGroup->addProcess(*m_process)) {
    528         m_process->addWebPageGroup(*m_pageGroup);
    529         m_process->send(Messages::WebProcess::CreateWebPageGroup(m_pageGroup->pageGroupID(), m_pageGroup->data()), 0);
    530     }
    531 
    532527    initializeCreationParameters();
    533528    m_process->send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);
     
    618613    if (createdExtension)
    619614        m_process->willAcquireUniversalFileReadSandboxExtension();
    620     m_process->send(Messages::WebPage::LoadURL(url, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     615    m_process->send(Messages::WebPage::LoadURL(url, sandboxExtensionHandle, WebContextUserMessageEncoder(userData)), m_pageID);
    621616    m_process->responsivenessTimer()->start();
    622617}
     
    633628    if (createdExtension)
    634629        m_process->willAcquireUniversalFileReadSandboxExtension();
    635     m_process->send(Messages::WebPage::LoadURLRequest(urlRequest->resourceRequest(), sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     630    m_process->send(Messages::WebPage::LoadURLRequest(urlRequest->resourceRequest(), sandboxExtensionHandle, WebContextUserMessageEncoder(userData)), m_pageID);
    636631    m_process->responsivenessTimer()->start();
    637632}
     
    660655    SandboxExtension::createHandle(resourceDirectoryPath, SandboxExtension::ReadOnly, sandboxExtensionHandle);
    661656    m_process->assumeReadAccessToBaseURL(resourceDirectoryURL);
    662     m_process->send(Messages::WebPage::LoadURL(fileURL, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     657    m_process->send(Messages::WebPage::LoadURL(fileURL, sandboxExtensionHandle, WebContextUserMessageEncoder(userData)), m_pageID);
    663658    m_process->responsivenessTimer()->start();
    664659}
     
    670665
    671666    m_process->assumeReadAccessToBaseURL(baseURL);
    672     m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     667    m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData)), m_pageID);
    673668    m_process->responsivenessTimer()->start();
    674669}
     
    680675
    681676    m_process->assumeReadAccessToBaseURL(baseURL);
    682     m_process->send(Messages::WebPage::LoadHTMLString(htmlString, baseURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     677    m_process->send(Messages::WebPage::LoadHTMLString(htmlString, baseURL, WebContextUserMessageEncoder(userData)), m_pageID);
    683678    m_process->responsivenessTimer()->start();
    684679}
     
    695690
    696691    m_process->assumeReadAccessToBaseURL(baseURL);
    697     m_process->send(Messages::WebPage::LoadAlternateHTMLString(htmlString, baseURL, unreachableURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     692    m_process->send(Messages::WebPage::LoadAlternateHTMLString(htmlString, baseURL, unreachableURL, WebContextUserMessageEncoder(userData)), m_pageID);
    698693    m_process->responsivenessTimer()->start();
    699694}
     
    704699        reattachToWebProcess();
    705700
    706     m_process->send(Messages::WebPage::LoadPlainTextString(string, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     701    m_process->send(Messages::WebPage::LoadPlainTextString(string, WebContextUserMessageEncoder(userData)), m_pageID);
    707702    m_process->responsivenessTimer()->start();
    708703}
     
    713708        reattachToWebProcess();
    714709
    715     m_process->send(Messages::WebPage::LoadWebArchiveData(webArchiveData->dataReference(), WebContextUserMessageEncoder(userData, m_process.get())), m_pageID);
     710    m_process->send(Messages::WebPage::LoadWebArchiveData(webArchiveData->dataReference(), WebContextUserMessageEncoder(userData)), m_pageID);
    716711    m_process->responsivenessTimer()->start();
    717712}
     
    31113106void WebPageProxy::postMessageToInjectedBundle(const String& messageName, API::Object* messageBody)
    31123107{
    3113     process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody, process())), m_pageID);
     3108    process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody)), m_pageID);
    31143109}
    31153110
     
    38683863    m_creationParameters.drawingAreaType = m_drawingArea->type();
    38693864    m_creationParameters.store = m_pageGroup->preferences()->store();
    3870     m_creationParameters.pageGroupID = m_pageGroup->pageGroupID();
     3865    m_creationParameters.pageGroupData = m_pageGroup->data();
    38713866    m_creationParameters.drawsBackground = m_drawsBackground;
    38723867    m_creationParameters.drawsTransparentBackground = m_drawsTransparentBackground;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r159603 r159631  
    229229public:
    230230
    231     static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup&, uint64_t pageID);
     231    static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID);
    232232    virtual ~WebPageProxy();
    233233
     
    743743       
    744744private:
    745     WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup&, uint64_t pageID);
     745    WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID);
    746746    void platformInitialize();
    747747    void initializeCreationParameters();
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r159603 r159631  
    3838#include "WebNavigationDataStore.h"
    3939#include "WebNotificationManagerProxy.h"
    40 #include "WebPageGroup.h"
    4140#include "WebPageProxy.h"
    4241#include "WebPluginSiteDataManager.h"
     
    154153        m_downloadProxyMap->processDidClose();
    155154
    156     Vector<WebPageGroup*> pageGroups;
    157     copyValuesToVector(m_pageGroups, pageGroups);
    158     for (size_t i = 0, size = frames.size(); i < size; ++i)
    159         pageGroups[i]->disconnectProcess(*this);
    160     m_pageGroups.clear();
    161 
    162155    m_context->disconnectProcess(this);
    163156}
     
    168161}
    169162
    170 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, WebPageGroup& pageGroup)
     163PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, WebContext*, WebPageGroup* pageGroup)
    171164{
    172165    uint64_t pageID = generatePageID();
     
    215208    copyValuesToVector(m_pageMap, result);
    216209    return result;
    217 }
    218 
    219 WebPageGroup* WebProcessProxy::webPageGroup(uint64_t pageGroupID)
    220 {
    221     if (!HashMap<uint64_t, WebPageGroup*>::isValidKey(pageGroupID))
    222         return nullptr;
    223 
    224     return m_pageGroups.get(pageGroupID);
    225 }
    226 
    227 void WebProcessProxy::addWebPageGroup(WebPageGroup& pageGroup)
    228 {
    229     m_pageGroups.add(pageGroup.pageGroupID(), &pageGroup);
    230210}
    231211
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.h

    r159603 r159631  
    7878
    7979    static WebPageProxy* webPage(uint64_t pageID);
    80     PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebPageGroup&);
     80    PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebContext*, WebPageGroup*);
    8181    void addExistingWebPage(WebPageProxy*, uint64_t pageID);
    8282    void removeWebPage(uint64_t pageID);
    8383    Vector<WebPageProxy*> pages() const;
    84 
    85     WebPageGroup* webPageGroup(uint64_t pageGroupID);
    86     void addWebPageGroup(WebPageGroup&);
    8784
    8885    WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const;
     
    198195    WebFrameProxyMap m_frameMap;
    199196    WebBackForwardListItemMap m_backForwardListItemMap;
    200     HashMap<uint64_t, WebPageGroup*> m_pageGroups;
    201197
    202198    OwnPtr<DownloadProxyMap> m_downloadProxyMap;
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h

    r159603 r159631  
    5454    }
    5555
    56     InjectedBundleUserMessageEncoder(const InjectedBundleUserMessageEncoder&, API::Object* root)
    57         : Base(root)
    58     {
    59     }
    60 
    6156    void encode(CoreIPC::ArgumentEncoder& encoder) const
    6257    {
    6358        API::Object::Type type = API::Object::Type::Null;
    64         if (baseEncode(encoder, *this, type))
     59        if (baseEncode(encoder, type))
    6560            return;
    6661
     
    139134        }
    140135        case API::Object::Type::PageGroup: {
    141             bool isNewPageGroup;
    142             if (!decoder.decode(isNewPageGroup))
     136            WebPageGroupData pageGroupData;
     137            if (!decoder.decode(pageGroupData))
    143138                return false;
    144            
    145             if (isNewPageGroup) {
    146                 WebPageGroupData pageGroupData;
    147                 if (!decoder.decode(pageGroupData))
    148                     return false;
    149                 coder.m_root = WebProcess::shared().createWebPageGroup(pageGroupData.pageGroupID, pageGroupData);
    150             } else {
    151                 uint64_t pageGroupID;
    152                 if (!decoder.decode(pageGroupID))
    153                     return false;
    154                 coder.m_root = WebProcess::shared().webPageGroup(pageGroupID);
    155             }
     139            coder.m_root = WebProcess::shared().webPageGroup(pageGroupData);
    156140            break;
    157141        }
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r159603 r159631  
    345345    m_mayStartMediaWhenInWindow = parameters.mayStartMediaWhenInWindow;
    346346
    347     m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupID);
    348     ASSERT(m_pageGroup);
    349 
     347    m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupData);
    350348    m_page->setGroupName(m_pageGroup->identifier());
    351349    m_page->setDeviceScaleFactor(parameters.deviceScaleFactor);
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r159603 r159631  
    705705}
    706706
    707 WebPageGroupProxy* WebProcess::createWebPageGroup(uint64_t pageGroupID, const WebPageGroupData& pageGroupData)
    708 {
    709     ASSERT(!m_pageGroupMap.contains(pageGroupID));
    710     return m_pageGroupMap.add(pageGroupID, WebPageGroupProxy::create(pageGroupData)).iterator->value.get();
    711 }
    712 
    713707WebPageGroupProxy* WebProcess::webPageGroup(PageGroup* pageGroup)
    714708{
     
    724718{
    725719    return m_pageGroupMap.get(pageGroupID);
     720}
     721
     722WebPageGroupProxy* WebProcess::webPageGroup(const WebPageGroupData& pageGroupData)
     723{
     724    HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::AddResult result = m_pageGroupMap.add(pageGroupData.pageGroupID, nullptr);
     725    if (result.isNewEntry) {
     726        ASSERT(!result.iterator->value);
     727        result.iterator->value = WebPageGroupProxy::create(pageGroupData);
     728    }
     729
     730    return result.iterator->value.get();
    726731}
    727732
  • trunk/Source/WebKit2/WebProcess/WebProcess.h

    r159603 r159631  
    128128    void removeWebFrame(uint64_t);
    129129
    130     WebPageGroupProxy* createWebPageGroup(uint64_t pageGroupID, const WebPageGroupData&);
    131130    WebPageGroupProxy* webPageGroup(WebCore::PageGroup*);
    132131    WebPageGroupProxy* webPageGroup(uint64_t pageGroupID);
     132    WebPageGroupProxy* webPageGroup(const WebPageGroupData&);
    133133
    134134#if PLATFORM(MAC)
  • trunk/Source/WebKit2/WebProcess/WebProcess.messages.in

    r159603 r159631  
    2727    # Create a new page.
    2828    CreateWebPage(uint64_t newPageID, WebKit::WebPageCreationParameters pageCreationParameters)
    29 
    30     # Create a new page group.
    31     CreateWebPageGroup(uint64_t newPageGroupID, WebKit::WebPageGroupData pageGroupData)
    3229
    3330    # Visited link tracking.
Note: See TracChangeset for help on using the changeset viewer.