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;