Changeset 159740 in webkit
- Timestamp:
- Nov 24, 2013 7:09:03 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r159737 r159740 1 2013-11-22 Sam Weinig <sam@webkit.org> 2 3 WebPageGroup's should keep track of what processes they are being used by 4 https://bugs.webkit.org/show_bug.cgi?id=124556 5 6 Reviewed by Dan Bernstein. 7 8 * Scripts/webkit2/messages.py: 9 (struct_or_class): 10 Mark WebPageGroupData as a struct. 11 12 * Shared/UserMessageCoders.h: 13 * Shared/mac/ObjCObjectGraphCoders.h: 14 * Shared/mac/ObjCObjectGraphCoders.mm: 15 * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h: 16 * UIProcess/WebConnectionToWebProcess.cpp: 17 * UIProcess/WebContext.cpp: 18 * UIProcess/WebContextUserMessageCoders.h: 19 * UIProcess/WebPageProxy.cpp: 20 * UIProcess/WebPageProxy.h: 21 Pass the WebProcess/WebProcessProxy to both encode and decode. 22 23 * Shared/WebPageCreationParameters.h: 24 Pass the page group by ID when creating a page, as it will have had its own 25 creation message sent already. 26 27 * UIProcess/WebPageGroup.cpp: 28 * UIProcess/WebPageGroup.h: 29 Keep track of processes. 30 31 * UIProcess/WebProcessProxy.cpp: 32 * UIProcess/WebProcessProxy.h: 33 Keep track of the page groups used by the process. 34 35 * WebProcess/WebPage/WebPage.cpp: 36 Get the already create page group on creation. 37 38 * WebProcess/WebProcess.cpp: 39 * WebProcess/WebProcess.h: 40 * WebProcess/WebProcess.messages.in: 41 Explicitly create page groups in the WebProcess. 42 1 43 2013-11-24 Brady Eidson <beidson@apple.com> 2 44 -
trunk/Source/WebKit2/Scripts/webkit2/messages.py
r159728 r159740 217 217 'WebKit::WebNavigationDataStore', 218 218 'WebKit::WebPageCreationParameters', 219 'WebKit::WebPageGroupData', 219 220 'WebKit::WebPreferencesStore', 220 221 'WebKit::WebProcessCreationParameters', -
trunk/Source/WebKit2/Shared/UserMessageCoders.h
r159647 r159740 72 72 class UserMessageEncoder { 73 73 public: 74 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, API::Object::Type& type) const74 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder, 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( array->at(i));89 encoder << Owner(coder, array->at(i)); 90 90 return true; 91 91 } … … 99 99 for (; it != end; ++it) { 100 100 encoder << it->key; 101 encoder << Owner( it->value.get());101 encoder << Owner(coder, 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( renderLayer->renderer());152 encoder << Owner(coder, 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( renderLayer->negativeZOrderList());159 encoder << Owner( renderLayer->normalFlowList());160 encoder << Owner( renderLayer->positiveZOrderList());158 encoder << Owner(coder, renderLayer->negativeZOrderList()); 159 encoder << Owner(coder, renderLayer->normalFlowList()); 160 encoder << Owner(coder, renderLayer->positiveZOrderList()); 161 161 return true; 162 162 } … … 166 166 encoder << renderObject->elementTagName(); 167 167 encoder << renderObject->elementID(); 168 encoder << Owner( renderObject->elementClassNames());168 encoder << Owner(coder, renderObject->elementClassNames()); 169 169 encoder << renderObject->absolutePosition(); 170 170 encoder << renderObject->frameRect(); 171 encoder << Owner( renderObject->children());171 encoder << Owner(coder, renderObject->children()); 172 172 return true; 173 173 } -
trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp
r159631 r159740 38 38 encoder << store; 39 39 encoder.encodeEnum(drawingAreaType); 40 encoder << pageGroup Data;40 encoder << pageGroupID; 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 Data))79 if (!decoder.decode(parameters.pageGroupID)) 80 80 return false; 81 81 if (!decoder.decode(parameters.drawsBackground)) -
trunk/Source/WebKit2/Shared/WebPageCreationParameters.h
r159631 r159740 61 61 WebPreferencesStore store; 62 62 DrawingAreaType drawingAreaType; 63 WebPageGroupData pageGroupData;63 uint64_t pageGroupID; 64 64 65 65 bool drawsBackground; -
trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.h
r159631 r159740 39 39 class WebContextObjCObjectGraphEncoder { 40 40 public: 41 explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph* );41 explicit WebContextObjCObjectGraphEncoder(ObjCObjectGraph*, WebProcessProxy*); 42 42 void encode(CoreIPC::ArgumentEncoder&) const; 43 43 44 44 private: 45 45 ObjCObjectGraph* m_objectGraph; 46 WebProcessProxy* m_process; 46 47 }; 47 48 -
trunk/Source/WebKit2/Shared/mac/ObjCObjectGraphCoders.mm
r159631 r159740 93 93 class ObjCObjectGraphEncoder { 94 94 public: 95 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, WebKitNSType& type) const95 bool baseEncode(CoreIPC::ArgumentEncoder& encoder, const Owner& coder, WebKitNSType& type) const 96 96 { 97 97 if (!m_root) { … … 119 119 120 120 for (NSUInteger i = 0; i < size; ++i) 121 encoder << Owner( [array objectAtIndex:i]);121 encoder << Owner(coder, [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( [keys objectAtIndex:i]);134 encoder << Owner( [values objectAtIndex:i]);133 encoder << Owner(coder, [keys objectAtIndex:i]); 134 encoder << Owner(coder, [values objectAtIndex:i]); 135 135 } 136 136 … … 270 270 typedef ObjCObjectGraphEncoder<WebContextObjCObjectGraphEncoderImpl> Base; 271 271 272 explicit WebContextObjCObjectGraphEncoderImpl(id root) 273 : Base(root) 272 explicit WebContextObjCObjectGraphEncoderImpl(id root, WebProcessProxy* process) 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) 274 281 { 275 282 } … … 278 285 { 279 286 WebKitNSType type = NullType; 280 if (baseEncode(encoder, type))287 if (baseEncode(encoder, *this, type)) 281 288 return; 282 289 … … 291 298 case WKTypeRefWrapperType: { 292 299 WKTypeRefWrapper *wrapper = static_cast<WKTypeRefWrapper *>(m_root); 293 encoder << WebContextUserMessageEncoder(toImpl(wrapper.object) );300 encoder << WebContextUserMessageEncoder(toImpl(wrapper.object), m_process); 294 301 break; 295 302 } … … 300 307 } 301 308 } 309 310 private: 311 WebProcessProxy* m_process; 302 312 }; 303 313 … … 379 389 } 380 390 391 explicit InjectedBundleObjCObjectGraphEncoderImpl(const InjectedBundleObjCObjectGraphEncoderImpl&, id root) 392 : Base(root) 393 { 394 } 395 381 396 void encode(CoreIPC::ArgumentEncoder& encoder) const 382 397 { 383 398 WebKitNSType type = NullType; 384 if (baseEncode(encoder, type))399 if (baseEncode(encoder, *this, type)) 385 400 return; 386 401 … … 472 487 // Adaptors 473 488 474 WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph )489 WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder(ObjCObjectGraph* objectGraph, WebProcessProxy* process) 475 490 : m_objectGraph(objectGraph) 491 , m_process(process) 476 492 { 477 493 } … … 479 495 void WebContextObjCObjectGraphEncoder::encode(CoreIPC::ArgumentEncoder& encoder) const 480 496 { 481 encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject() );497 encoder << WebContextObjCObjectGraphEncoderImpl(m_objectGraph->rootObject(), m_process); 482 498 } 483 499 -
trunk/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp
r159631 r159740 53 53 void WebConnectionToWebProcess::encodeMessageBody(CoreIPC::ArgumentEncoder& encoder, API::Object* messageBody) 54 54 { 55 encoder << WebContextUserMessageEncoder(messageBody );55 encoder << WebContextUserMessageEncoder(messageBody, m_process); 56 56 } 57 57 -
trunk/Source/WebKit2/UIProcess/WebContext.cpp
r159728 r159740 595 595 if (!injectedBundleInitializationUserData) 596 596 injectedBundleInitializationUserData = m_injectedBundleInitializationUserData; 597 process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get() )), 0);597 process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get(), process.get())), 0); 598 598 599 599 if (WebPreferences::anyPageGroupsAreUsingPrivateBrowsing()) … … 609 609 610 610 messageData.encode(message.first); 611 messageData.encode(WebContextUserMessageEncoder(message.second.get() ));611 messageData.encode(WebContextUserMessageEncoder(message.second.get(), process.get())); 612 612 process->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0); 613 613 } … … 760 760 pageGroup = m_defaultPageGroup.get(); 761 761 762 return process->createWebPage(pageClient, this,pageGroup);762 return process->createWebPage(pageClient, *pageGroup); 763 763 } 764 764 … … 790 790 // FIXME: Return early if the message body contains any references to WKPageRefs/WKFrameRefs etc. since they're local to a process. 791 791 792 CoreIPC::ArgumentEncoder messageData;793 messageData.encode(messageName);794 messageData.encode(WebContextUserMessageEncoder(messageBody));795 796 for (size_t i = 0; i < m_processes.size(); ++i) 792 for (size_t i = 0; i < m_processes.size(); ++i) { 793 CoreIPC::ArgumentEncoder messageData; 794 messageData.encode(messageName); 795 messageData.encode(WebContextUserMessageEncoder(messageBody, m_processes[i].get())); 796 797 797 m_processes[i]->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData.buffer(), messageData.bufferSize())), 0); 798 } 798 799 } 799 800 … … 993 994 RefPtr<API::Object> returnData; 994 995 didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody.get(), returnData); 995 replyEncoder->encode(WebContextUserMessageEncoder(returnData.get() ));996 replyEncoder->encode(WebContextUserMessageEncoder(returnData.get(), WebProcessProxy::fromConnection(connection))); 996 997 return; 997 998 } -
trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
r159631 r159740 46 46 typedef UserMessageEncoder<WebContextUserMessageEncoder> Base; 47 47 48 explicit WebContextUserMessageEncoder(API::Object* root )48 explicit WebContextUserMessageEncoder(API::Object* root, WebProcessProxy* process) 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) 50 57 { 51 58 } … … 54 61 { 55 62 API::Object::Type type = API::Object::Type::Null; 56 if (baseEncode(encoder, type))63 if (baseEncode(encoder, *this, type)) 57 64 return; 58 65 … … 70 77 case API::Object::Type::PageGroup: { 71 78 WebPageGroup* pageGroup = static_cast<WebPageGroup*>(m_root); 72 encoder << pageGroup->data(); 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 } 73 88 break; 74 89 } … … 76 91 case API::Object::Type::ObjCObjectGraph: { 77 92 ObjCObjectGraph* objectGraph = static_cast<ObjCObjectGraph*>(m_root); 78 encoder << WebContextObjCObjectGraphEncoder(objectGraph );93 encoder << WebContextObjCObjectGraphEncoder(objectGraph, m_process); 79 94 break; 80 95 } … … 85 100 } 86 101 } 102 103 private: 104 WebProcessProxy* m_process; 87 105 }; 88 106 … … 136 154 if (!decoder.decode(pageGroupID)) 137 155 return false; 138 coder.m_root = WebPageGroup::get(pageGroupID);156 coder.m_root = coder.m_process->webPageGroup(pageGroupID); 139 157 break; 140 158 } -
trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp
r159631 r159740 31 31 #include "WebPageProxy.h" 32 32 #include "WebPreferences.h" 33 #include "WebProcessMessages.h" 33 34 #include <wtf/HashMap.h> 34 35 #include <wtf/text/StringConcatenate.h> … … 192 193 } 193 194 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 194 205 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/WebPageGroup.h
r159631 r159740 36 36 namespace WebKit { 37 37 38 class WebPageProxy; 38 39 class WebPreferences; 39 class WebPageProxy;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&); 65 68 66 69 private: … … 72 75 mutable RefPtr<WebPreferences> m_preferences; 73 76 HashSet<WebPageProxy*> m_pages; 77 HashSet<WebProcessProxy*> m_processes; 74 78 }; 75 79 … … 77 81 void WebPageGroup::sendToAllProcessesInGroup(const T& message, uint64_t destinationID) 78 82 { 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 83 for (auto webProcessProxy : m_processes) { 88 84 if (webProcessProxy->canSendMessage()) 89 85 webProcessProxy->send(T(message), destinationID); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r159724 r159740 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 527 532 initializeCreationParameters(); 528 533 m_process->send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0); … … 613 618 if (createdExtension) 614 619 m_process->willAcquireUniversalFileReadSandboxExtension(); 615 m_process->send(Messages::WebPage::LoadURL(url, sandboxExtensionHandle, WebContextUserMessageEncoder(userData )), m_pageID);620 m_process->send(Messages::WebPage::LoadURL(url, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 616 621 m_process->responsivenessTimer()->start(); 617 622 } … … 628 633 if (createdExtension) 629 634 m_process->willAcquireUniversalFileReadSandboxExtension(); 630 m_process->send(Messages::WebPage::LoadURLRequest(urlRequest->resourceRequest(), sandboxExtensionHandle, WebContextUserMessageEncoder(userData )), m_pageID);635 m_process->send(Messages::WebPage::LoadURLRequest(urlRequest->resourceRequest(), sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 631 636 m_process->responsivenessTimer()->start(); 632 637 } … … 655 660 SandboxExtension::createHandle(resourceDirectoryPath, SandboxExtension::ReadOnly, sandboxExtensionHandle); 656 661 m_process->assumeReadAccessToBaseURL(resourceDirectoryURL); 657 m_process->send(Messages::WebPage::LoadURL(fileURL, sandboxExtensionHandle, WebContextUserMessageEncoder(userData )), m_pageID);662 m_process->send(Messages::WebPage::LoadURL(fileURL, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 658 663 m_process->responsivenessTimer()->start(); 659 664 } … … 665 670 666 671 m_process->assumeReadAccessToBaseURL(baseURL); 667 m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData )), m_pageID);672 m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 668 673 m_process->responsivenessTimer()->start(); 669 674 } … … 675 680 676 681 m_process->assumeReadAccessToBaseURL(baseURL); 677 m_process->send(Messages::WebPage::LoadHTMLString(htmlString, baseURL, WebContextUserMessageEncoder(userData )), m_pageID);682 m_process->send(Messages::WebPage::LoadHTMLString(htmlString, baseURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 678 683 m_process->responsivenessTimer()->start(); 679 684 } … … 690 695 691 696 m_process->assumeReadAccessToBaseURL(baseURL); 692 m_process->send(Messages::WebPage::LoadAlternateHTMLString(htmlString, baseURL, unreachableURL, WebContextUserMessageEncoder(userData )), m_pageID);697 m_process->send(Messages::WebPage::LoadAlternateHTMLString(htmlString, baseURL, unreachableURL, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 693 698 m_process->responsivenessTimer()->start(); 694 699 } … … 699 704 reattachToWebProcess(); 700 705 701 m_process->send(Messages::WebPage::LoadPlainTextString(string, WebContextUserMessageEncoder(userData )), m_pageID);706 m_process->send(Messages::WebPage::LoadPlainTextString(string, WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 702 707 m_process->responsivenessTimer()->start(); 703 708 } … … 708 713 reattachToWebProcess(); 709 714 710 m_process->send(Messages::WebPage::LoadWebArchiveData(webArchiveData->dataReference(), WebContextUserMessageEncoder(userData )), m_pageID);715 m_process->send(Messages::WebPage::LoadWebArchiveData(webArchiveData->dataReference(), WebContextUserMessageEncoder(userData, m_process.get())), m_pageID); 711 716 m_process->responsivenessTimer()->start(); 712 717 } … … 3054 3059 void WebPageProxy::postMessageToInjectedBundle(const String& messageName, API::Object* messageBody) 3055 3060 { 3056 process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody )), m_pageID);3061 process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody, process())), m_pageID); 3057 3062 } 3058 3063 … … 3816 3821 m_creationParameters.drawingAreaType = m_drawingArea->type(); 3817 3822 m_creationParameters.store = m_pageGroup->preferences()->store(); 3818 m_creationParameters.pageGroup Data = m_pageGroup->data();3823 m_creationParameters.pageGroupID = m_pageGroup->pageGroupID(); 3819 3824 m_creationParameters.drawsBackground = m_drawsBackground; 3820 3825 m_creationParameters.drawsTransparentBackground = m_drawsTransparentBackground; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r159724 r159740 323 323 public: 324 324 325 static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup *, uint64_t pageID);325 static PassRefPtr<WebPageProxy> create(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup&, uint64_t pageID); 326 326 virtual ~WebPageProxy(); 327 327 … … 848 848 849 849 private: 850 WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup *, uint64_t pageID);850 WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup&, uint64_t pageID); 851 851 void platformInitialize(); 852 852 void initializeCreationParameters(); -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r159631 r159740 38 38 #include "WebNavigationDataStore.h" 39 39 #include "WebNotificationManagerProxy.h" 40 #include "WebPageGroup.h" 40 41 #include "WebPageProxy.h" 41 42 #include "WebPluginSiteDataManager.h" … … 145 146 Vector<RefPtr<WebFrameProxy>> frames; 146 147 copyValuesToVector(m_frameMap, frames); 147 148 for (size_t i = 0, size = frames.size(); i < size; ++i) 149 frames[i]->disconnect(); 148 for (auto frame : frames) 149 frame->disconnect(); 150 150 m_frameMap.clear(); 151 151 … … 153 153 m_downloadProxyMap->processDidClose(); 154 154 155 Vector<WebPageGroup*> pageGroups; 156 copyValuesToVector(m_pageGroups, pageGroups); 157 for (auto pageGroup : pageGroups) 158 pageGroup->disconnectProcess(*this); 159 m_pageGroups.clear(); 160 155 161 m_context->disconnectProcess(this); 156 162 } … … 161 167 } 162 168 163 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, Web Context*, WebPageGroup*pageGroup)169 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient* pageClient, WebPageGroup& pageGroup) 164 170 { 165 171 uint64_t pageID = generatePageID(); … … 208 214 copyValuesToVector(m_pageMap, result); 209 215 return result; 216 } 217 218 WebPageGroup* WebProcessProxy::webPageGroup(uint64_t pageGroupID) 219 { 220 if (!HashMap<uint64_t, WebPageGroup*>::isValidKey(pageGroupID)) 221 return nullptr; 222 223 return m_pageGroups.get(pageGroupID); 224 } 225 226 void WebProcessProxy::addWebPageGroup(WebPageGroup& pageGroup) 227 { 228 m_pageGroups.add(pageGroup.pageGroupID(), &pageGroup); 210 229 } 211 230 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r159631 r159740 78 78 79 79 static WebPageProxy* webPage(uint64_t pageID); 80 PassRefPtr<WebPageProxy> createWebPage(PageClient*, Web Context*, WebPageGroup*);80 PassRefPtr<WebPageProxy> createWebPage(PageClient*, 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&); 84 87 85 88 WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const; … … 195 198 WebFrameProxyMap m_frameMap; 196 199 WebBackForwardListItemMap m_backForwardListItemMap; 200 HashMap<uint64_t, WebPageGroup*> m_pageGroups; 197 201 198 202 OwnPtr<DownloadProxyMap> m_downloadProxyMap; -
trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h
r159631 r159740 54 54 } 55 55 56 InjectedBundleUserMessageEncoder(const InjectedBundleUserMessageEncoder&, API::Object* root) 57 : Base(root) 58 { 59 } 60 56 61 void encode(CoreIPC::ArgumentEncoder& encoder) const 57 62 { 58 63 API::Object::Type type = API::Object::Type::Null; 59 if (baseEncode(encoder, type))64 if (baseEncode(encoder, *this, type)) 60 65 return; 61 66 … … 134 139 } 135 140 case API::Object::Type::PageGroup: { 136 WebPageGroupData pageGroupData;137 if (!decoder.decode( pageGroupData))141 bool isNewPageGroup; 142 if (!decoder.decode(isNewPageGroup)) 138 143 return false; 139 coder.m_root = WebProcess::shared().webPageGroup(pageGroupData); 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 } 140 156 break; 141 157 } -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r159734 r159740 349 349 m_mayStartMediaWhenInWindow = parameters.mayStartMediaWhenInWindow; 350 350 351 m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupData); 351 m_pageGroup = WebProcess::shared().webPageGroup(parameters.pageGroupID); 352 ASSERT(m_pageGroup); 353 352 354 m_page->setGroupName(m_pageGroup->identifier()); 353 355 m_page->setDeviceScaleFactor(parameters.deviceScaleFactor); -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r159724 r159740 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 707 713 WebPageGroupProxy* WebProcess::webPageGroup(PageGroup* pageGroup) 708 714 { … … 718 724 { 719 725 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();731 726 } 732 727 -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r159724 r159740 128 128 void removeWebFrame(uint64_t); 129 129 130 WebPageGroupProxy* createWebPageGroup(uint64_t pageGroupID, const WebPageGroupData&); 130 131 WebPageGroupProxy* webPageGroup(WebCore::PageGroup*); 131 132 WebPageGroupProxy* webPageGroup(uint64_t pageGroupID); 132 WebPageGroupProxy* webPageGroup(const WebPageGroupData&);133 133 134 134 #if PLATFORM(MAC) -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r159647 r159740 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) 29 32 30 33 # Visited link tracking.
Note: See TracChangeset
for help on using the changeset viewer.