Changeset 159982 in webkit
- Timestamp:
- Dec 2, 2013 4:43:27 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r159981 r159982 1 2013-12-02 Sam Weinig <sam@webkit.org> 2 3 WebPageGroups 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 Anders Carlsson. 7 8 * UIProcess/WebContextUserMessageCoders.h: 9 (WebKit::WebContextUserMessageEncoder::encode): 10 (WebKit::WebContextUserMessageDecoder::decode): 11 * UIProcess/WebPageGroup.cpp: 12 (WebKit::WebPageGroup::addProcess): 13 (WebKit::WebPageGroup::disconnectProcess): 14 * UIProcess/WebPageGroup.h: 15 (WebKit::WebPageGroup::sendToAllProcessesInGroup): 16 * UIProcess/WebPageProxy.cpp: 17 (WebKit::WebPageProxy::initializeWebPage): 18 * UIProcess/WebProcessProxy.cpp: 19 (WebKit::WebProcessProxy::disconnect): 20 (WebKit::WebProcessProxy::webPageGroup): 21 (WebKit::WebProcessProxy::addWebPageGroup): 22 * UIProcess/WebProcessProxy.h: 23 * WebProcess/WebProcess.cpp: 24 (WebKit::WebProcess::webPageGroup): 25 1 26 2013-12-02 Anders Carlsson <andersca@apple.com> 2 27 -
trunk/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
r159908 r159982 77 77 case API::Object::Type::PageGroup: { 78 78 WebPageGroup* pageGroup = static_cast<WebPageGroup*>(m_root); 79 if (pageGroup->addProcess(m_process)) 80 m_process.addWebPageGroup(*pageGroup); 79 81 encoder << pageGroup->data(); 80 82 break; … … 146 148 if (!decoder.decode(pageGroupID)) 147 149 return false; 148 coder.m_root = WebPageGroup::get(pageGroupID);150 coder.m_root = coder.m_process.webPageGroup(pageGroupID); 149 151 break; 150 152 } -
trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp
r159896 r159982 195 195 } 196 196 197 bool WebPageGroup::addProcess(WebProcessProxy& process) 198 { 199 return m_processes.add(&process).isNewEntry; 200 } 201 202 void WebPageGroup::disconnectProcess(WebProcessProxy& process) 203 { 204 m_processes.remove(&process); 205 } 206 197 207 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/WebPageGroup.h
r159903 r159982 66 66 void removeAllUserContent(); 67 67 68 bool addProcess(WebProcessProxy&); 69 void disconnectProcess(WebProcessProxy&); 70 68 71 private: 69 72 template<typename T> void sendToAllProcessesInGroup(const T&, uint64_t destinationID); … … 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 if (!processesSeen.add(&webProcessProxy).isNewEntry) 84 continue; 85 86 if (webProcessProxy.canSendMessage()) 87 webProcessProxy.send(T(message), destinationID); 83 for (auto webProcessProxy : m_processes) { 84 if (webProcessProxy->canSendMessage()) 85 webProcessProxy->send(T(message), destinationID); 88 86 } 89 87 } -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r159965 r159982 515 515 516 516 #if ENABLE(INSPECTOR_SERVER) 517 if ( m_pageGroup->preferences()->developerExtrasEnabled())517 if (pageGroup().preferences()->developerExtrasEnabled()) 518 518 inspector()->enableRemoteInspection(); 519 519 #endif 520 520 521 if (pageGroup().addProcess(process())) 522 process().addWebPageGroup(pageGroup()); 523 521 524 initializeCreationParameters(); 522 m_process->send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0);525 process().send(Messages::WebProcess::CreateWebPage(m_pageID, m_creationParameters), 0); 523 526 524 527 #if ENABLE(PAGE_VISIBILITY_API) 525 m_process->send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID);528 process().send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID); 526 529 #elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) 527 m_process->send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID);530 process().send(Messages::WebPage::SetVisibilityState(isViewVisible() ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID); 528 531 #endif 529 532 530 533 #if PLATFORM(MAC) 531 m_process->send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled), m_pageID);534 process().send(Messages::WebPage::SetSmartInsertDeleteEnabled(m_isSmartInsertDeleteEnabled), m_pageID); 532 535 #endif 533 536 } -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r159903 r159982 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 152 Vector<WebPageGroup*> pageGroups; 153 copyValuesToVector(m_pageGroups, pageGroups); 154 for (auto pageGroup : pageGroups) 155 pageGroup->disconnectProcess(*this); 156 m_pageGroups.clear(); 151 157 152 158 if (m_downloadProxyMap) … … 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
r159903 r159982 83 83 Vector<WebPageProxy*> pages() const; 84 84 85 WebPageGroup* webPageGroup(uint64_t pageGroupID); 86 void addWebPageGroup(WebPageGroup&); 87 85 88 WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const; 86 89 … … 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/WebProcess.cpp
r159765 r159982 722 722 WebPageGroupProxy* WebProcess::webPageGroup(const WebPageGroupData& pageGroupData) 723 723 { 724 HashMap<uint64_t, RefPtr<WebPageGroupProxy>>::AddResultresult = m_pageGroupMap.add(pageGroupData.pageGroupID, nullptr);724 auto result = m_pageGroupMap.add(pageGroupData.pageGroupID, nullptr); 725 725 if (result.isNewEntry) { 726 726 ASSERT(!result.iterator->value);
Note: See TracChangeset
for help on using the changeset viewer.