Changeset 163656 in webkit
- Timestamp:
- Feb 7, 2014 3:26:25 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r163654 r163656 1 2014-02-07 Anders Carlsson <andersca@apple.com> 2 3 Make it possible for each web page to have different preferences 4 https://bugs.webkit.org/show_bug.cgi?id=128403 5 6 Reviewed by Tim Horton. 7 8 * UIProcess/API/C/WKPreferences.cpp: 9 (WKPreferencesCreate): 10 * UIProcess/WebContext.cpp: 11 (WebKit::WebContext::ensureNetworkProcess): 12 (WebKit::WebContext::createNewWebProcess): 13 * UIProcess/WebIconDatabase.cpp: 14 (WebKit::WebIconDatabase::setDatabasePath): 15 * UIProcess/WebPageGroup.cpp: 16 (WebKit::WebPageGroup::WebPageGroup): 17 (WebKit::WebPageGroup::~WebPageGroup): 18 (WebKit::WebPageGroup::setPreferences): 19 * UIProcess/WebPageProxy.cpp: 20 (WebKit::WebPageProxy::WebPageProxy): 21 (WebKit::WebPageProxy::~WebPageProxy): 22 (WebKit::WebPageProxy::setPreferences): 23 (WebKit::WebPageProxy::preferencesDidChange): 24 * UIProcess/WebPageProxy.h: 25 * UIProcess/WebPreferences.cpp: 26 (WebKit::WebPreferences::~WebPreferences): 27 (WebKit::WebPreferences::addPage): 28 (WebKit::WebPreferences::removePage): 29 (WebKit::WebPreferences::update): 30 (WebKit::WebPreferences::updatePrivateBrowsingValue): 31 (WebKit::WebPreferences::anyPagesAreUsingPrivateBrowsing): 32 * UIProcess/WebPreferences.h: 33 1 34 2014-02-07 Benjamin Poulain <bpoulain@apple.com> 2 35 -
trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp
r163636 r163656 44 44 WKPreferencesRef WKPreferencesCreate() 45 45 { 46 RefPtr<WebPreferences> preferences = WebPreferences::create( );46 RefPtr<WebPreferences> preferences = WebPreferences::create(String()); 47 47 return toAPI(preferences.release().leakRef()); 48 48 } -
trunk/Source/WebKit2/UIProcess/WebContext.cpp
r163597 r163656 378 378 NetworkProcessCreationParameters parameters; 379 379 380 parameters.privateBrowsingEnabled = WebPreferences::anyPage GroupsAreUsingPrivateBrowsing();380 parameters.privateBrowsingEnabled = WebPreferences::anyPagesAreUsingPrivateBrowsing(); 381 381 382 382 parameters.cacheModel = m_cacheModel; … … 620 620 #endif 621 621 622 if (WebPreferences::anyPage GroupsAreUsingPrivateBrowsing())622 if (WebPreferences::anyPagesAreUsingPrivateBrowsing()) 623 623 process->send(Messages::WebProcess::EnsurePrivateBrowsingSession(SessionTracker::legacyPrivateSessionID), 0); 624 624 -
trunk/Source/WebKit2/UIProcess/WebIconDatabase.cpp
r161148 r163656 80 80 // FIXME: WebIconDatabases are per-WebContext but WebContext's don't have their own notion of the current private browsing setting. 81 81 // As we clean up private browsing throughout the stack we need to clean it up here. 82 m_iconDatabaseImpl->setPrivateBrowsingEnabled(WebPreferences::anyPage GroupsAreUsingPrivateBrowsing());82 m_iconDatabaseImpl->setPrivateBrowsingEnabled(WebPreferences::anyPagesAreUsingPrivateBrowsing()); 83 83 84 84 if (!m_iconDatabaseImpl->open(directoryName(path), pathGetFileName(path))) { -
trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp
r163644 r163656 87 87 , m_preferences(WebPreferences::create(m_data.identifer)) 88 88 { 89 m_preferences->addPageGroup(this);90 89 webPageGroupMap().set(m_data.pageGroupID, this); 91 90 } … … 93 92 WebPageGroup::~WebPageGroup() 94 93 { 95 m_preferences->removePageGroup(this);96 94 webPageGroupMap().remove(pageGroupID()); 97 95 } … … 112 110 return; 113 111 114 m_preferences->removePageGroup(this);115 112 m_preferences = preferences; 116 m_preferences->addPageGroup(this);117 113 118 114 for (auto& webPageProxy : m_pages) 119 115 webPageProxy->setPreferences(*m_preferences); 120 121 preferencesDidChange();122 116 } 123 117 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r163645 r163656 350 350 WebContext::statistics().wkPageCount++; 351 351 352 m_preferences->addPage(*this); 352 353 m_pageGroup->addPage(this); 353 354 … … 382 383 TextChecker::closeSpellDocumentWithTag(m_spellDocumentTag); 383 384 385 m_preferences->removePage(*this); 384 386 m_pageGroup->removePage(this); 385 387 … … 404 406 405 407 return m_isValid; 408 } 409 410 void WebPageProxy::setPreferences(WebPreferences& preferences) 411 { 412 if (&preferences == &m_preferences.get()) 413 return; 414 415 m_preferences->removePage(*this); 416 m_preferences = preferences; 417 m_preferences->addPage(*this); 418 419 preferencesDidChange(); 406 420 } 407 421 … … 2068 2082 2069 2083 #if ENABLE(INSPECTOR_SERVER) 2070 if (m_p ageGroup->preferences().developerExtrasEnabled())2084 if (m_preferences->developerExtrasEnabled()) 2071 2085 inspector()->enableRemoteInspection(); 2072 2086 #endif -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r163645 r163656 730 730 731 731 WebPreferences& preferences() { return m_preferences.get(); } 732 void setPreferences(WebPreferences& preferences) { m_preferences = preferences; }732 void setPreferences(WebPreferences&); 733 733 734 734 WebPageGroup& pageGroup() { return m_pageGroup.get(); } -
trunk/Source/WebKit2/UIProcess/WebPreferences.cpp
r163636 r163656 35 35 // FIXME: Manipulating this variable is not thread safe. 36 36 // Instead of tracking private browsing state as a boolean preference, we should let the client provide storage sessions explicitly. 37 static unsigned privateBrowsingPageGroupCount; 38 39 WebPreferences::WebPreferences() 40 { 41 platformInitializeStore(); 42 } 37 static unsigned privateBrowsingPageCount; 43 38 44 39 WebPreferences::WebPreferences(const String& identifier) … … 56 51 WebPreferences::~WebPreferences() 57 52 { 58 ASSERT(m_page Groups.isEmpty());53 ASSERT(m_pages.isEmpty()); 59 54 } 60 55 … … 64 59 } 65 60 66 void WebPreferences::addPage Group(WebPageGroup* pageGroup)61 void WebPreferences::addPage(WebPageProxy& webPageProxy) 67 62 { 68 bool didAddPageGroup = m_pageGroups.add(pageGroup).isNewEntry; 69 if (didAddPageGroup && privateBrowsingEnabled()) { 70 if (!privateBrowsingPageGroupCount) 63 ASSERT(!m_pages.contains(&webPageProxy)); 64 m_pages.add(&webPageProxy); 65 66 if (privateBrowsingEnabled()) { 67 if (!privateBrowsingPageCount) 71 68 WebContext::willStartUsingPrivateBrowsing(); 72 ++privateBrowsingPageGroupCount; 69 70 ++privateBrowsingPageCount; 73 71 } 74 72 } 75 73 76 void WebPreferences::removePage Group(WebPageGroup* pageGroup)74 void WebPreferences::removePage(WebPageProxy& webPageProxy) 77 75 { 78 bool didRemovePageGroup = m_pageGroups.remove(pageGroup); 79 if (didRemovePageGroup && privateBrowsingEnabled()) { 80 --privateBrowsingPageGroupCount; 81 if (!privateBrowsingPageGroupCount) 76 ASSERT(m_pages.contains(&webPageProxy)); 77 m_pages.remove(&webPageProxy); 78 79 if (privateBrowsingEnabled()) { 80 --privateBrowsingPageCount; 81 if (!privateBrowsingPageCount) 82 82 WebContext::willStopUsingPrivateBrowsing(); 83 83 } … … 86 86 void WebPreferences::update() 87 87 { 88 for ( HashSet<WebPageGroup*>::iterator it = m_pageGroups.begin(), end = m_pageGroups.end(); it != end; ++it)89 (*it)->preferencesDidChange();88 for (auto& webPageProxy : m_pages) 89 webPageProxy->preferencesDidChange(); 90 90 } 91 91 … … 129 129 platformUpdateBoolValueForKey(WebPreferencesKey::privateBrowsingEnabledKey(), value); 130 130 131 unsigned page GroupsChanged = m_pageGroups.size();132 if (!page GroupsChanged)131 unsigned pagesChanged = m_pages.size(); 132 if (!pagesChanged) 133 133 return; 134 134 135 135 if (value) { 136 if (!privateBrowsingPage GroupCount)136 if (!privateBrowsingPageCount) 137 137 WebContext::willStartUsingPrivateBrowsing(); 138 privateBrowsingPage GroupCount += pageGroupsChanged;138 privateBrowsingPageCount += pagesChanged; 139 139 } 140 140 … … 142 142 143 143 if (!value) { 144 ASSERT(privateBrowsingPage GroupCount >= pageGroupsChanged);145 privateBrowsingPage GroupCount -= pageGroupsChanged;146 if (!privateBrowsingPage GroupCount)144 ASSERT(privateBrowsingPageCount >= pagesChanged); 145 privateBrowsingPageCount -= pagesChanged; 146 if (!privateBrowsingPageCount) 147 147 WebContext::willStopUsingPrivateBrowsing(); 148 148 } … … 167 167 #undef DEFINE_PREFERENCE_GETTER_AND_SETTERS 168 168 169 bool WebPreferences::anyPage GroupsAreUsingPrivateBrowsing()169 bool WebPreferences::anyPagesAreUsingPrivateBrowsing() 170 170 { 171 return privateBrowsingPage GroupCount;171 return privateBrowsingPageCount; 172 172 } 173 173 -
trunk/Source/WebKit2/UIProcess/WebPreferences.h
r163636 r163656 40 40 namespace WebKit { 41 41 42 class WebPage Group;42 class WebPageProxy; 43 43 44 44 class WebPreferences : public API::ObjectImpl<API::Object::Type::Preferences> { 45 45 public: 46 static PassRefPtr<WebPreferences> create()47 {48 return adoptRef(new WebPreferences);49 }50 46 static PassRefPtr<WebPreferences> create(const String& identifier) 51 47 { … … 57 53 PassRefPtr<WebPreferences> copy() const; 58 54 59 void addPage Group(WebPageGroup*);60 void removePage Group(WebPageGroup*);55 void addPage(WebPageProxy&); 56 void removePage(WebPageProxy&); 61 57 62 58 const WebPreferencesStore& store() const { return m_store; } … … 73 69 void forceUpdate() { update(); } 74 70 75 static bool anyPage GroupsAreUsingPrivateBrowsing();71 static bool anyPagesAreUsingPrivateBrowsing(); 76 72 77 73 private: 78 WebPreferences();79 74 explicit WebPreferences(const String&); 80 75 WebPreferences(const WebPreferences&); … … 97 92 void updatePrivateBrowsingValue(bool value); 98 93 99 HashSet<WebPageGroup*> m_pageGroups;94 String m_identifier; 100 95 WebPreferencesStore m_store; 101 String m_identifier; 96 97 HashSet<WebPageProxy*> m_pages; 102 98 }; 103 99
Note: See TracChangeset
for help on using the changeset viewer.