Changeset 159631 in webkit
- Timestamp:
- Nov 21, 2013 9:41:39 AM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r159611 r159631 1 2013-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 1 66 2013-11-20 Brady Eidson <beidson@apple.com> 2 67 -
trunk/Source/WebKit2/Scripts/webkit2/messages.py
r159611 r159631 215 215 'WebKit::WebNavigationDataStore', 216 216 'WebKit::WebPageCreationParameters', 217 'WebKit::WebPageGroupData',218 217 'WebKit::WebPreferencesStore', 219 218 'WebKit::WebProcessCreationParameters', -
trunk/Source/WebKit2/Shared/UserMessageCoders.h
r159603 r159631 72 72 class UserMessageEncoder { 73 73 public: 74 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder,API::Object::Type& type) const74 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, API::Object::Type& type) const 75 75 { 76 76 if (!m_root) { … … 87 87 encoder << static_cast<uint64_t>(array->size()); 88 88 for (size_t i = 0; i < array->size(); ++i) 89 encoder << Owner( coder,array->at(i));89 encoder << Owner(array->at(i)); 90 90 return true; 91 91 } … … 99 99 for (; it != end; ++it) { 100 100 encoder << it->key; 101 encoder << Owner( coder,it->value.get());101 encoder << Owner(it->value.get()); 102 102 } 103 103 return true; … … 150 150 case API::Object::Type::RenderLayer: { 151 151 WebRenderLayer* renderLayer = static_cast<WebRenderLayer*>(m_root); 152 encoder << Owner( coder,renderLayer->renderer());152 encoder << Owner(renderLayer->renderer()); 153 153 encoder << renderLayer->isReflection(); 154 154 encoder << renderLayer->isClipping(); … … 156 156 encoder << static_cast<uint32_t>(renderLayer->compositingLayerType()); 157 157 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()); 161 161 return true; 162 162 } … … 166 166 encoder << renderObject->elementTagName(); 167 167 encoder << renderObject->elementID(); 168 encoder << Owner( coder,renderObject->elementClassNames());168 encoder << Owner(renderObject->elementClassNames()); 169 169 encoder << renderObject->absolutePosition(); 170 170 encoder << renderObject->frameRect(); 171 encoder << Owner( coder,renderObject->children());171 encoder << Owner(renderObject->children()); 172 172 return true; 173 173 } -
trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp
r159603 r159631 38 38 encoder << store; 39 39 encoder.encodeEnum(drawingAreaType); 40 encoder << pageGroup ID;40 encoder << pageGroupData; 41 41 encoder << drawsBackground; 42 42 encoder << drawsTransparentBackground; … … 77 77 if (!decoder.decodeEnum(parameters.drawingAreaType)) 78 78 return false; 79 if (!decoder.decode(parameters.pageGroup ID))79 if (!decoder.decode(parameters.pageGroupData)) 80 80 return false; 81 81 if (!decoder.decode(parameters.drawsBackground)) -
trunk/Source/WebKit2/Shared/WebPageCreationParameters.h
r159603 r159631 61 61 WebPreferencesStore store; 62 62 DrawingAreaType drawingAreaType; 63 uint64_t pageGroupID;63 WebPageGroupData pageGroupData; 64 64 65 65 bool drawsBackground; -
trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.h
r159603 r159631 39 39 class WebContextObjCObjectGraphEncoder { 40 40 public: 41 explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph* , WebProcessProxy*);41 explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph*); 42 42 void encode(CoreIPC::ArgumentEncoder&) const; 43 43 44 44 private: 45 45 ObjCObjectGraph* m_objectGraph; 46 WebProcessProxy* m_process;47 46 }; 48 47 -
trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm
r159603 r159631 93 93 class ObjCObjectGraphEncoder { 94 94 public: 95 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder,WebKitNSType& type) const95 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, WebKitNSType& type) const 96 96 { 97 97 if (!m_root) { … … 119 119 120 120 for (NSUInteger i = 0; i < size; ++i) 121 encoder << Owner( coder,[array objectAtIndex:i]);121 encoder << Owner([array objectAtIndex:i]); 122 122 return true; 123 123 } … … 131 131 NSArray *values = [dictionary allValues]; 132 132 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]); 135 135 } 136 136 … … 270 270 typedef ObjCObjectGraphEncoder<WebContextObjCObjectGraphEncoderImpl> Base; 271 271 272 explicit WebContextObjCObjectGraphEncoderImpl(id root , WebProcessProxy* process)272 explicit WebContextObjCObjectGraphEncoderImpl(id root) 273 273 : 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)281 274 { 282 275 } … … 285 278 { 286 279 WebKitNSType type = NullType; 287 if (baseEncode(encoder, *this,type))280 if (baseEncode(encoder, type)) 288 281 return; 289 282 … … 298 291 case WKTypeRefWrapperType: { 299 292 WKTypeRefWrapper *wrapper = static_cast<WKTypeRefWrapper *>(m_root); 300 encoder << WebContextUserMessageEncoder(toImpl(wrapper.object) , m_process);293 encoder << WebContextUserMessageEncoder(toImpl(wrapper.object)); 301 294 break; 302 295 } … … 307 300 } 308 301 } 309 310 private:311 WebProcessProxy* m_process;312 302 }; 313 303 … … 389 379 } 390 380 391 explicit InjectedBundleObjCObjectGraphEncoderImpl(const InjectedBundleObjCObjectGraphEncoderImpl&, id root)392 : Base(root)393 {394 }395 396 381 void encode(CoreIPC::ArgumentEncoder& encoder) const 397 382 { 398 383 WebKitNSType type = NullType; 399 if (baseEncode(encoder, *this,type))384 if (baseEncode(encoder, type)) 400 385 return; 401 386 … … 487 472 // Adaptors 488 473 489 WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph , WebProcessProxy* process)474 WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph) 490 475 : m_objectGraph(objectGraph) 491 , m_process(process)492 476 { 493 477 } … … 495 479 void WebContextObjCObjectGraphEncoder::encode(CoreIPC::ArgumentEncoder& encoder) const 496 480 { 497 encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject() , m_process);481 encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject()); 498 482 } 499 483 -
trunk/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp
r159603 r159631 53 53 void WebConnectionToWebProcess::encodeMessageBody(CoreIPC::ArgumentEncoder& encoder, API::Object* messageBody) 54 54 { 55 encoder << WebContextUserMessageEncoder(messageBody , m_process);55 encoder << WebContextUserMessageEncoder(messageBody); 56 56 } 57 57 -
trunk/Source/WebKit2/UIProcess/WebContext.cpp
r159603 r159631 574 574 if (!injectedBundleInitializationUserData) 575 575 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); 577 577 578 578 if (WebPreferences::anyPageGroupsAreUsingPrivateBrowsing()) … … 588 588 589 589 messageData.encode(message.first); 590 messageData.encode(WebContextUserMessageEncoder(message.second.get() , process.get()));590 messageData.encode(WebContextUserMessageEncoder(message.second.get())); 591 591 process->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0); 592 592 } … … 739 739 pageGroup = m_defaultPageGroup.get(); 740 740 741 return process->createWebPage(pageClient, *pageGroup);741 return process->createWebPage(pageClient, this, pageGroup); 742 742 } 743 743 … … 769 769 // FIXME: Return early if the message body contains any references to WKPageRefs/WKFrameRefs etc. since they're local to a process. 770 770 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) 776 776 m_processes[i]->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0); 777 }778 777 } 779 778 … … 973 972 RefPtr<API::Object> returnData; 974 973 didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody.get(), returnData); 975 replyEncoder->encode(WebContextUserMessageEncoder(returnData.get() , WebProcessProxy::fromConnection(connection)));974 replyEncoder->encode(WebContextUserMessageEncoder(returnData.get())); 976 975 return; 977 976 } -
trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
r159603 r159631 46 46 typedef UserMessageEncoder<WebContextUserMessageEncoder> Base; 47 47 48 explicit WebContextUserMessageEncoder(API::Object* root , WebProcessProxy* process)48 explicit WebContextUserMessageEncoder(API::Object* root) 49 49 : 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)57 50 { 58 51 } … … 61 54 { 62 55 API::Object::Type type = API::Object::Type::Null; 63 if (baseEncode(encoder, *this,type))56 if (baseEncode(encoder, type)) 64 57 return; 65 58 … … 77 70 case API::Object::Type::PageGroup: { 78 71 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(); 88 73 break; 89 74 } … … 91 76 case API::Object::Type::ObjCObjectGraph: { 92 77 ObjCObjectGraph* objectGraph = static_cast<ObjCObjectGraph*>(m_root); 93 encoder << WebContextObjCObjectGraphEncoder(objectGraph , m_process);78 encoder << WebContextObjCObjectGraphEncoder(objectGraph); 94 79 break; 95 80 } … … 100 85 } 101 86 } 102 103 private:104 WebProcessProxy* m_process;105 87 }; 106 88 … … 154 136 if (!decoder.decode(pageGroupID)) 155 137 return false; 156 coder.m_root = coder.m_process->webPageGroup(pageGroupID);138 coder.m_root = WebPageGroup::get(pageGroupID); 157 139 break; 158 140 } -
trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp
r159603 r159631 31 31 #include "WebPageProxy.h" 32 32 #include "WebPreferences.h" 33 #include "WebProcessMessages.h"34 33 #include <wtf/HashMap.h> 35 34 #include <wtf/text/StringConcatenate.h> … … 193 192 } 194 193 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 205 194 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/WebPageGroup.h
r159603 r159631 36 36 namespace WebKit { 37 37 38 class WebPreferences; 38 39 class WebPageProxy; 39 class WebPreferences;40 40 41 41 class WebPageGroup : public API::TypedObject<API::Object::Type::PageGroup> { … … 57 57 WebPreferences* preferences() const; 58 58 void preferencesDidChange(); 59 59 60 60 void addUserStyleSheet(const String& source, const String& baseURL, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserStyleLevel); 61 61 void addUserScript(const String& source, const String& baseURL, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserScriptInjectionTime); … … 63 63 void removeAllUserScripts(); 64 64 void removeAllUserContent(); 65 66 bool addProcess(WebProcessProxy&);67 void disconnectProcess(WebProcessProxy&);68 65 69 66 private: … … 75 72 mutable RefPtr<WebPreferences> m_preferences; 76 73 HashSet<WebPageProxy*> m_pages; 77 HashSet<WebProcessProxy*> m_processes;78 74 }; 79 75 … … 81 77 void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID) 82 78 { 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 84 88 if (webProcessProxy->canSendMessage()) 85 89 webProcessProxy->send(T(message), destinationID); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r159603 r159631 223 223 #endif // !LOG_DISABLED 224 224 225 PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup &pageGroup, uint64_t pageID)225 PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID) 226 226 { 227 227 return adoptRef(new WebPageProxy(pageClient, process, pageGroup, pageID)); 228 228 } 229 229 230 WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup &pageGroup, uint64_t pageID)230 WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> process, WebPageGroup* pageGroup, uint64_t pageID) 231 231 : m_pageClient(pageClient) 232 232 , m_process(process) 233 , m_pageGroup( &pageGroup)233 , m_pageGroup(pageGroup) 234 234 , m_mainFrame(0) 235 235 , m_userAgent(standardUserAgent()) … … 525 525 #endif 526 526 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 532 527 initializeCreationParameters(); 533 528 m_process->send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0); … … 618 613 if (createdExtension) 619 614 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); 621 616 m_process->responsivenessTimer()->start(); 622 617 } … … 633 628 if (createdExtension) 634 629 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); 636 631 m_process->responsivenessTimer()->start(); 637 632 } … … 660 655 SandboxExtension::createHandle(resourceDirectoryPath, SandboxExtension::ReadOnly, sandboxExtensionHandle); 661 656 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); 663 658 m_process->responsivenessTimer()->start(); 664 659 } … … 670 665 671 666 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); 673 668 m_process->responsivenessTimer()->start(); 674 669 } … … 680 675 681 676 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); 683 678 m_process->responsivenessTimer()->start(); 684 679 } … … 695 690 696 691 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); 698 693 m_process->responsivenessTimer()->start(); 699 694 } … … 704 699 reattachToWebProcess(); 705 700 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); 707 702 m_process->responsivenessTimer()->start(); 708 703 } … … 713 708 reattachToWebProcess(); 714 709 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); 716 711 m_process->responsivenessTimer()->start(); 717 712 } … … 3111 3106 void WebPageProxy::postMessageToInjectedBundle(const String& messageName, API::Object* messageBody) 3112 3107 { 3113 process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody , process())), m_pageID);3108 process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody)), m_pageID); 3114 3109 } 3115 3110 … … 3868 3863 m_creationParameters.drawingAreaType = m_drawingArea->type(); 3869 3864 m_creationParameters.store = m_pageGroup->preferences()->store(); 3870 m_creationParameters.pageGroup ID = m_pageGroup->pageGroupID();3865 m_creationParameters.pageGroupData = m_pageGroup->data(); 3871 3866 m_creationParameters.drawsBackground = m_drawsBackground; 3872 3867 m_creationParameters.drawsTransparentBackground = m_drawsTransparentBackground; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r159603 r159631 229 229 public: 230 230 231 static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup &, uint64_t pageID);231 static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID); 232 232 virtual ~WebPageProxy(); 233 233 … … 743 743 744 744 private: 745 WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup &, uint64_t pageID);745 WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID); 746 746 void platformInitialize(); 747 747 void initializeCreationParameters(); -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r159603 r159631 38 38 #include "WebNavigationDataStore.h" 39 39 #include "WebNotificationManagerProxy.h" 40 #include "WebPageGroup.h"41 40 #include "WebPageProxy.h" 42 41 #include "WebPluginSiteDataManager.h" … … 154 153 m_downloadProxyMap->processDidClose(); 155 154 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 162 155 m_context->disconnectProcess(this); 163 156 } … … 168 161 } 169 162 170 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, Web PageGroup&pageGroup)163 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, WebContext*, WebPageGroup* pageGroup) 171 164 { 172 165 uint64_t pageID = generatePageID(); … … 215 208 copyValuesToVector(m_pageMap, result); 216 209 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);230 210 } 231 211 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r159603 r159631 78 78 79 79 static WebPageProxy* webPage(uint64_t pageID); 80 PassRefPtr<WebPageProxy> createWebPage(PageClient*, Web PageGroup&);80 PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebContext*, WebPageGroup*); 81 81 void addExistingWebPage(WebPageProxy*, uint64_t pageID); 82 82 void removeWebPage(uint64_t pageID); 83 83 Vector<WebPageProxy*> pages() const; 84 85 WebPageGroup* webPageGroup(uint64_t pageGroupID);86 void addWebPageGroup(WebPageGroup&);87 84 88 85 WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const; … … 198 195 WebFrameProxyMap m_frameMap; 199 196 WebBackForwardListItemMap m_backForwardListItemMap; 200 HashMap<uint64_t, WebPageGroup*> m_pageGroups;201 197 202 198 OwnPtr<DownloadProxyMap> m_downloadProxyMap; -
trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h
r159603 r159631 54 54 } 55 55 56 InjectedBundleUserMessageEncoder(const InjectedBundleUserMessageEncoder&, API::Object* root)57 : Base(root)58 {59 }60 61 56 void encode(CoreIPC::ArgumentEncoder& encoder) const 62 57 { 63 58 API::Object::Type type = API::Object::Type::Null; 64 if (baseEncode(encoder, *this,type))59 if (baseEncode(encoder, type)) 65 60 return; 66 61 … … 139 134 } 140 135 case API::Object::Type::PageGroup: { 141 bool isNewPageGroup;142 if (!decoder.decode( isNewPageGroup))136 WebPageGroupData pageGroupData; 137 if (!decoder.decode(pageGroupData)) 143 138 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); 156 140 break; 157 141 } -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r159603 r159631 345 345 m_mayStartMediaWhenInWindow = parameters.mayStartMediaWhenInWindow; 346 346 347 m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupID); 348 ASSERT(m_pageGroup); 349 347 m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupData); 350 348 m_page->setGroupName(m_pageGroup->identifier()); 351 349 m_page->setDeviceScaleFactor(parameters.deviceScaleFactor); -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r159603 r159631 705 705 } 706 706 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 713 707 WebPageGroupProxy* WebProcess::webPageGroup(PageGroup* pageGroup) 714 708 { … … 724 718 { 725 719 return m_pageGroupMap.get(pageGroupID); 720 } 721 722 WebPageGroupProxy* 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(); 726 731 } 727 732 -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r159603 r159631 128 128 void removeWebFrame(uint64_t); 129 129 130 WebPageGroupProxy* createWebPageGroup(uint64_t pageGroupID, const WebPageGroupData&);131 130 WebPageGroupProxy* webPageGroup(WebCore::PageGroup*); 132 131 WebPageGroupProxy* webPageGroup(uint64_t pageGroupID); 132 WebPageGroupProxy* webPageGroup(const WebPageGroupData&); 133 133 134 134 #if PLATFORM(MAC) -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r159603 r159631 27 27 # Create a new page. 28 28 CreateWebPage(uint64_t newPageID, WebKit::WebPageCreationParameters pageCreationParameters) 29 30 # Create a new page group.31 CreateWebPageGroup(uint64_t newPageGroupID, WebKit::WebPageGroupData pageGroupData)32 29 33 30 # Visited link tracking.
Note: See TracChangeset
for help on using the changeset viewer.