Diff
Modified: trunk/Source/WebCore/ChangeLog (269433 => 269434)
--- trunk/Source/WebCore/ChangeLog 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebCore/ChangeLog 2020-11-05 16:46:12 UTC (rev 269434)
@@ -1,5 +1,25 @@
2020-11-05 Alex Christensen <[email protected]>
+ Use fewer raw pointers and more const correctness in Frame.h
+ https://bugs.webkit.org/show_bug.cgi?id=218598
+
+ Reviewed by Youenn Fablet.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::opener): Deleted.
+ * loader/FrameLoader.h:
+ * page/Frame.cpp:
+ (WebCore::Frame::Frame):
+ (WebCore::Frame::page const):
+ (WebCore::Frame::ownerElement const):
+ (WebCore::Frame::ownerRenderer const):
+ * page/Frame.h:
+ (WebCore::Frame::loader const): Deleted.
+ (WebCore::Frame::ownerElement const): Deleted.
+ (WebCore::Frame::page const): Deleted.
+
+2020-11-05 Alex Christensen <[email protected]>
+
Use std::exchange instead of WTFMove to avoid using members after moving them in NavigationScheduler.cpp
https://bugs.webkit.org/show_bug.cgi?id=218597
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (269433 => 269434)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2020-11-05 16:46:12 UTC (rev 269434)
@@ -1042,11 +1042,6 @@
return m_frame.document()->contentSecurityPolicy()->allowFormAction(url, redirectResponseReceived);
}
-Frame* FrameLoader::opener()
-{
- return m_opener;
-}
-
void FrameLoader::setOpener(Frame* opener)
{
if (m_opener && !opener)
Modified: trunk/Source/WebCore/loader/FrameLoader.h (269433 => 269434)
--- trunk/Source/WebCore/loader/FrameLoader.h 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebCore/loader/FrameLoader.h 2020-11-05 16:46:12 UTC (rev 269434)
@@ -116,7 +116,8 @@
ResourceLoadNotifier& notifier() const { return m_notifier; }
class SubframeLoader;
- SubframeLoader& subframeLoader() const { return *m_subframeLoader; }
+ SubframeLoader& subframeLoader() { return *m_subframeLoader; }
+ const SubframeLoader& subframeLoader() const { return *m_subframeLoader; }
MixedContentChecker& mixedContentChecker() const { return m_mixedContentChecker; }
void setupForReplace();
@@ -247,7 +248,8 @@
bool checkIfFormActionAllowedByCSP(const URL&, bool didReceiveRedirectResponse) const;
- WEBCORE_EXPORT Frame* opener();
+ Frame* opener() { return m_opener; }
+ const Frame* opener() const { return m_opener; }
WEBCORE_EXPORT void setOpener(Frame*);
WEBCORE_EXPORT void detachFromAllOpenedFrames();
Modified: trunk/Source/WebCore/page/Frame.cpp (269433 => 269434)
--- trunk/Source/WebCore/page/Frame.cpp 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebCore/page/Frame.cpp 2020-11-05 16:46:12 UTC (rev 269434)
@@ -148,12 +148,12 @@
Frame::Frame(Page& page, HTMLFrameOwnerElement* ownerElement, UniqueRef<FrameLoaderClient>&& frameLoaderClient)
: m_mainFrame(ownerElement ? page.mainFrame() : *this)
- , m_page(&page)
+ , m_page(makeWeakPtr(page))
, m_settings(&page.settings())
, m_treeNode(*this, parentFromOwnerElement(ownerElement))
, m_loader(makeUniqueRef<FrameLoader>(*this, WTFMove(frameLoaderClient)))
, m_navigationScheduler(makeUniqueRef<NavigationScheduler>(*this))
- , m_ownerElement(ownerElement)
+ , m_ownerElement(makeWeakPtr(ownerElement))
, m_script(makeUniqueRef<ScriptController>(*this))
, m_pageZoomFactor(parentPageZoomFactor(this))
, m_textZoomFactor(parentTextZoomFactor(this))
@@ -207,6 +207,16 @@
m_mainFrame.selfOnlyDeref();
}
+Page* Frame::page() const
+{
+ return m_page.get();
+}
+
+HTMLFrameOwnerElement* Frame::ownerElement() const
+{
+ return m_ownerElement.get();
+}
+
void Frame::addDestructionObserver(FrameDestructionObserver* observer)
{
m_destructionObservers.add(observer);
@@ -718,7 +728,7 @@
RenderWidget* Frame::ownerRenderer() const
{
- auto* ownerElement = m_ownerElement;
+ auto* ownerElement = m_ownerElement.get();
if (!ownerElement)
return nullptr;
auto* object = ownerElement->renderer();
Modified: trunk/Source/WebCore/page/Frame.h (269433 => 269434)
--- trunk/Source/WebCore/page/Frame.h 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebCore/page/Frame.h 2020-11-05 16:46:12 UTC (rev 269434)
@@ -158,8 +158,8 @@
Frame& mainFrame() const;
bool isMainFrame() const { return this == static_cast<void*>(&m_mainFrame); }
- Page* page() const;
- HTMLFrameOwnerElement* ownerElement() const;
+ WEBCORE_EXPORT Page* page() const;
+ WEBCORE_EXPORT HTMLFrameOwnerElement* ownerElement() const;
Document* document() const;
FrameView* view() const;
@@ -168,7 +168,8 @@
const Editor& editor() const { return document()->editor(); }
EventHandler& eventHandler() { return m_eventHandler; }
const EventHandler& eventHandler() const { return m_eventHandler; }
- FrameLoader& loader() const;
+ const FrameLoader& loader() const { return m_loader.get(); }
+ FrameLoader& loader() { return m_loader.get(); }
NavigationScheduler& navigationScheduler() const;
FrameSelection& selection() { return document()->selection(); }
const FrameSelection& selection() const { return document()->selection(); }
@@ -333,13 +334,13 @@
Vector<std::pair<Ref<DOMWrapperWorld>, UniqueRef<UserScript>>> m_userScriptsAwaitingNotification;
Frame& m_mainFrame;
- Page* m_page;
+ WeakPtr<Page> m_page;
const RefPtr<Settings> m_settings;
mutable FrameTree m_treeNode;
- mutable UniqueRef<FrameLoader> m_loader;
+ UniqueRef<FrameLoader> m_loader;
mutable UniqueRef<NavigationScheduler> m_navigationScheduler;
- HTMLFrameOwnerElement* m_ownerElement;
+ WeakPtr<HTMLFrameOwnerElement> m_ownerElement;
RefPtr<FrameView> m_view;
RefPtr<Document> m_doc;
@@ -379,11 +380,6 @@
UniqueRef<EventHandler> m_eventHandler;
};
-inline FrameLoader& Frame::loader() const
-{
- return m_loader.get();
-}
-
inline NavigationScheduler& Frame::navigationScheduler() const
{
return m_navigationScheduler.get();
@@ -399,21 +395,11 @@
return m_doc.get();
}
-inline HTMLFrameOwnerElement* Frame::ownerElement() const
-{
- return m_ownerElement;
-}
-
inline FrameTree& Frame::tree() const
{
return m_treeNode;
}
-inline Page* Frame::page() const
-{
- return m_page;
-}
-
inline void Frame::detachFromPage()
{
m_page = nullptr;
Modified: trunk/Source/WebKit/ChangeLog (269433 => 269434)
--- trunk/Source/WebKit/ChangeLog 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebKit/ChangeLog 2020-11-05 16:46:12 UTC (rev 269434)
@@ -1,3 +1,13 @@
+2020-11-05 Alex Christensen <[email protected]>
+
+ Use fewer raw pointers and more const correctness in Frame.h
+ https://bugs.webkit.org/show_bug.cgi?id=218598
+
+ Reviewed by Youenn Fablet.
+
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
+ (WebKit::toWebFrameLoaderClient):
+
2020-11-05 Carlos Garcia Campos <[email protected]>
WebDriver: handle surrogate pairs in keyboard actions
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (269433 => 269434)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h 2020-11-05 16:21:01 UTC (rev 269433)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h 2020-11-05 16:46:12 UTC (rev 269434)
@@ -294,10 +294,14 @@
#endif
};
-// As long as EmptyFrameLoaderClient exists in WebCore, this can return 0.
+// As long as EmptyFrameLoaderClient exists in WebCore, this can return nullptr.
inline WebFrameLoaderClient* toWebFrameLoaderClient(WebCore::FrameLoaderClient& client)
{
- return client.isEmptyFrameLoaderClient() ? 0 : static_cast<WebFrameLoaderClient*>(&client);
+ return client.isEmptyFrameLoaderClient() ? nullptr : static_cast<WebFrameLoaderClient*>(&client);
}
+inline const WebFrameLoaderClient* toWebFrameLoaderClient(const WebCore::FrameLoaderClient& client)
+{
+ return client.isEmptyFrameLoaderClient() ? nullptr : static_cast<const WebFrameLoaderClient*>(&client);
+}
} // namespace WebKit