Title: [163671] trunk/Source/WebKit2
Revision
163671
Author
ander...@apple.com
Date
2014-02-07 17:57:02 -0800 (Fri, 07 Feb 2014)

Log Message

Simplify web page creation
https://bugs.webkit.org/show_bug.cgi?id=128425

Reviewed by Andreas Kling.

Add a WebPageConfiguration class and stick the page group, preferences, session etc there
instead of adding more and more parameters to the WebPageProxy constructor.

Make WebContext::createWebPage fill in the missing pieces in the WebPageConfiguration object.

* UIProcess/API/ios/WKContentView.mm:
(-[WKContentView initWithFrame:configuration:]):
(-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
* UIProcess/API/mac/WKView.mm:
(-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
* UIProcess/WebContext.cpp:
(WebKit::WebContext::createWebPage):
* UIProcess/WebContext.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::create):
(WebKit::WebPageProxy::WebPageProxy):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createWebPage):
* UIProcess/WebProcessProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (163670 => 163671)


--- trunk/Source/WebKit2/ChangeLog	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/ChangeLog	2014-02-08 01:57:02 UTC (rev 163671)
@@ -1,3 +1,31 @@
+2014-02-07  Anders Carlsson  <ander...@apple.com>
+
+        Simplify web page creation
+        https://bugs.webkit.org/show_bug.cgi?id=128425
+
+        Reviewed by Andreas Kling.
+
+        Add a WebPageConfiguration class and stick the page group, preferences, session etc there
+        instead of adding more and more parameters to the WebPageProxy constructor.
+
+        Make WebContext::createWebPage fill in the missing pieces in the WebPageConfiguration object.
+
+        * UIProcess/API/ios/WKContentView.mm:
+        (-[WKContentView initWithFrame:configuration:]):
+        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::createWebPage):
+        * UIProcess/WebContext.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::create):
+        (WebKit::WebPageProxy::WebPageProxy):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::createWebPage):
+        * UIProcess/WebProcessProxy.h:
+
 2014-02-07  Tim Horton  <timothy_hor...@apple.com>
 
         Build fix. Wrong section of the file.

Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm	2014-02-08 01:57:02 UTC (rev 163671)
@@ -103,7 +103,9 @@
 
     _pageClient = std::make_unique<PageClientImpl>(self);
 
-    _page = configuration.processClass->_context->createWebPage(*_pageClient, nullptr);
+    WebPageConfiguration webPageConfiguration;
+
+    _page = configuration.processClass->_context->createWebPage(*_pageClient, std::move(webPageConfiguration));
     _page->initializeWebPage();
     _page->setIntrinsicDeviceScaleFactor([UIScreen mainScreen].scale);
     _page->setUseFixedLayout(true);
@@ -250,7 +252,12 @@
     InitializeWebKit2();
 
     _pageClient = std::make_unique<PageClientImpl>(self);
-    _page = toImpl(contextRef)->createWebPage(*_pageClient, toImpl(pageGroupRef), toImpl(relatedPage));
+
+    WebPageConfiguration webPageConfiguration;
+    webPageConfiguration.group = toImpl(pageGroupRef);
+    webPageConfiguration.relatedPage = toImpl(relatedPage);
+
+    _page = toImpl(contextRef)->createWebPage(*_pageClient, std::move(webPageConfiguration));
     _page->initializeWebPage();
     _page->setIntrinsicDeviceScaleFactor([UIScreen mainScreen].scale);
     _page->setUseFixedLayout(true);

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-02-08 01:57:02 UTC (rev 163671)
@@ -2946,8 +2946,12 @@
 
     _data = [[WKViewData alloc] init];
 
+    WebPageConfiguration webPageConfiguration;
+    webPageConfiguration.pageGroup = toImpl(pageGroupRef);
+    webPageConfiguration.relatedPage = toImpl(relatedPage);
+
     _data->_pageClient = std::make_unique<PageClientImpl>(self);
-    _data->_page = toImpl(contextRef)->createWebPage(*_data->_pageClient, toImpl(pageGroupRef), toImpl(relatedPage));
+    _data->_page = toImpl(contextRef)->createWebPage(*_data->_pageClient, std::move(webPageConfiguration));
     _data->_page->setIntrinsicDeviceScaleFactor([self _intrinsicDeviceScaleFactor]);
     _data->_page->initializeWebPage();
 

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2014-02-08 01:57:02 UTC (rev 163671)
@@ -763,8 +763,15 @@
     return *result;
 }
 
-PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageGroup* pageGroup, API::Session& session, WebPageProxy* relatedPage)
+PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageConfiguration configuration)
 {
+    if (!configuration.pageGroup)
+        configuration.pageGroup = &m_defaultPageGroup.get();
+    if (!configuration.preferences)
+        configuration.preferences = &configuration.pageGroup->preferences();
+    if (!configuration.session)
+        configuration.session = configuration.preferences->privateBrowsingEnabled() ? &API::Session::legacyPrivateSession() : &API::Session::defaultSession();
+
     RefPtr<WebProcessProxy> process;
     if (m_processModel == ProcessModelSharedSecondaryProcess) {
         process = &ensureSharedWebProcess();
@@ -772,22 +779,16 @@
         if (m_haveInitialEmptyProcess) {
             process = m_processes.last();
             m_haveInitialEmptyProcess = false;
-        } else if (relatedPage) {
+        } else if (configuration.relatedPage) {
             // Sharing processes, e.g. when creating the page via window.open().
-            process = &relatedPage->process();
+            process = &configuration.relatedPage->process();
         } else
             process = &createNewWebProcessRespectingProcessCountLimit();
     }
 
-    return process->createWebPage(pageClient, pageGroup ? *pageGroup : m_defaultPageGroup.get(), session);
+    return process->createWebPage(pageClient, std::move(configuration));
 }
 
-PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageGroup* pageGroup, WebPageProxy* relatedPage)
-{
-    WebPageGroup* group = pageGroup ? pageGroup : &m_defaultPageGroup.get();
-    return createWebPage(pageClient, group, group->preferences().privateBrowsingEnabled() ? API::Session::legacyPrivateSession() : API::Session::defaultSession(), relatedPage);
-}
-
 DownloadProxy* WebContext::download(WebPageProxy* initiatingPage, const ResourceRequest& request)
 {
     DownloadProxy* downloadProxy = createDownloadProxy();

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2014-02-08 01:57:02 UTC (rev 163671)
@@ -74,6 +74,7 @@
 class WebPageGroup;
 class WebPageProxy;
 struct StatisticsData;
+struct WebPageConfiguration;
 struct WebProcessCreationParameters;
     
 typedef GenericCallback<WKDictionaryRef> DictionaryCallback;
@@ -156,8 +157,7 @@
 
     StorageManager& storageManager() const { return *m_storageManager; }
 
-    PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup*, API::Session&, WebPageProxy* relatedPage = 0);
-    PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup*, WebPageProxy* relatedPage = 0);
+    PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageConfiguration);
 
     const String& injectedBundlePath() const { return m_injectedBundlePath; }
 

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2014-02-08 01:57:02 UTC (rev 163671)
@@ -246,19 +246,19 @@
 }
 #endif // !LOG_DISABLED
 
-PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient& pageClient, WebProcessProxy& process, WebPageGroup& pageGroup, WebPreferences& preferences, API::Session& session, uint64_t pageID)
+PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient& pageClient, WebProcessProxy& process, uint64_t pageID, const WebPageConfiguration& configuration)
 {
-    return adoptRef(new WebPageProxy(pageClient, process, pageGroup, preferences, session, pageID));
+    return adoptRef(new WebPageProxy(pageClient, process, pageID, configuration));
 }
 
-WebPageProxy::WebPageProxy(PageClient& pageClient, WebProcessProxy& process, WebPageGroup& pageGroup, WebPreferences& preferences, API::Session& session, uint64_t pageID)
+WebPageProxy::WebPageProxy(PageClient& pageClient, WebProcessProxy& process, uint64_t pageID, const WebPageConfiguration& configuration)
     : m_pageClient(pageClient)
     , m_loaderClient(std::make_unique<API::LoaderClient>())
     , m_policyClient(std::make_unique<API::PolicyClient>())
     , m_uiClient(std::make_unique<API::UIClient>())
     , m_process(process)
-    , m_pageGroup(pageGroup)
-    , m_preferences(preferences)
+    , m_pageGroup(*configuration.pageGroup)
+    , m_preferences(*configuration.preferences)
     , m_mainFrame(nullptr)
     , m_userAgent(standardUserAgent())
     , m_geolocationPermissionRequestManager(*this)
@@ -301,7 +301,7 @@
     , m_isTrackingTouchEvents(false)
 #endif
     , m_pageID(pageID)
-    , m_session(session)
+    , m_session(*configuration.session)
     , m_isPageSuspended(false)
 #if PLATFORM(MAC)
     , m_isSmartInsertDeleteEnabled(TextChecker::isSmartInsertDeleteEnabled())
@@ -369,7 +369,7 @@
 
     // FIXME: If we ever expose the session storage size as a preference, we need to pass it here.
     m_process->context().storageManager().createSessionStorageNamespace(m_pageID, m_process->isValid() ? m_process->connection() : 0, std::numeric_limits<unsigned>::max());
-    setSession(session);
+    setSession(*configuration.session);
 }
 
 WebPageProxy::~WebPageProxy()

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-02-08 01:57:02 UTC (rev 163671)
@@ -323,6 +323,13 @@
 };
 #endif
 
+struct WebPageConfiguration {
+    WebPageGroup* pageGroup = nullptr;
+    WebPreferences* preferences = nullptr;
+    API::Session* session = nullptr;
+    WebPageProxy* relatedPage = nullptr;
+};
+
 class WebPageProxy : public API::ObjectImpl<API::Object::Type::Page>
 #if ENABLE(INPUT_TYPE_COLOR)
     , public WebColorPicker::Client
@@ -331,7 +338,7 @@
     , public IPC::MessageReceiver
     , public IPC::MessageSender {
 public:
-    static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, WebPageGroup&, WebPreferences&, API::Session&, uint64_t pageID);
+    static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
     virtual ~WebPageProxy();
 
     void setSession(API::Session&);
@@ -879,7 +886,7 @@
 #endif
 
 private:
-    WebPageProxy(PageClient&, WebProcessProxy&, WebPageGroup&, WebPreferences&, API::Session&, uint64_t pageID);
+    WebPageProxy(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
     void platformInitialize();
 
     void updateViewState(WebCore::ViewState::Flags flagsToUpdate = WebCore::ViewState::AllFlags);

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2014-02-08 01:57:02 UTC (rev 163671)
@@ -168,10 +168,10 @@
     return globalPageMap().get(pageID);
 }
 
-PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, WebPageGroup& pageGroup, API::Session& session)
+PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, const WebPageConfiguration& configuration)
 {
     uint64_t pageID = generatePageID();
-    RefPtr<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageGroup, pageGroup.preferences(), session, pageID);
+    RefPtr<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageID, configuration);
     m_pageMap.set(pageID, webPage.get());
     globalPageMap().set(pageID, webPage.get());
 #if PLATFORM(MAC)

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (163670 => 163671)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2014-02-08 01:49:17 UTC (rev 163670)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2014-02-08 01:57:02 UTC (rev 163671)
@@ -78,7 +78,7 @@
     WebContext& context() { return m_context.get(); }
 
     static WebPageProxy* webPage(uint64_t pageID);
-    PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup&, API::Session&);
+    PassRefPtr<WebPageProxy> createWebPage(PageClient&, const WebPageConfiguration&);
     void addExistingWebPage(WebPageProxy*, uint64_t pageID);
     void removeWebPage(uint64_t pageID);
     Vector<WebPageProxy*> pages() const;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to