Skip to content

Commit 98e0676

Browse files
Alex Christensenwebkit-commit-queue
authored andcommitted
Add null checks effectively in UserInputBridge
https://bugs.webkit.org/show_bug.cgi?id=218622 <rdar://problem/70724960> Patch by Alex Christensen <achristensen@webkit.org> on 2020-11-05 Reviewed by Wenson Hsieh. Source/WebCore: * replay/UserInputBridge.cpp: (WebCore::UserInputBridge::reloadFrame): (WebCore::UserInputBridge::stopLoadingFrame): * replay/UserInputBridge.h: Source/WebKit: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::stopLoadingFrame): (WebKit::WebPage::stopLoading): (WebKit::WebPage::reload): Canonical link: https://commits.webkit.org/231298@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269498 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 209ecf7 commit 98e0676

5 files changed

Lines changed: 45 additions & 10 deletions

File tree

Source/WebCore/ChangeLog

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
2020-11-05 Alex Christensen <achristensen@webkit.org>
2+
3+
Add null checks effectively in UserInputBridge
4+
https://bugs.webkit.org/show_bug.cgi?id=218622
5+
<rdar://problem/70724960>
6+
7+
Reviewed by Wenson Hsieh.
8+
9+
* replay/UserInputBridge.cpp:
10+
(WebCore::UserInputBridge::reloadFrame):
11+
(WebCore::UserInputBridge::stopLoadingFrame):
12+
* replay/UserInputBridge.h:
13+
114
2020-11-05 Myles C. Maxfield <mmaxfield@apple.com>
215

316
[Cocoa] REGRESSION(r269211): Text with emoji can trigger drawing corruption

Source/WebCore/replay/UserInputBridge.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,14 @@ void UserInputBridge::loadRequest(FrameLoadRequest&& request, InputSource)
117117
m_page.mainFrame().loader().load(WTFMove(request));
118118
}
119119

120-
void UserInputBridge::reloadFrame(Frame* frame, OptionSet<ReloadOption> options, InputSource)
120+
void UserInputBridge::reloadFrame(Frame& frame, OptionSet<ReloadOption> options, InputSource)
121121
{
122-
frame->loader().reload(options);
122+
frame.loader().reload(options);
123123
}
124124

125-
void UserInputBridge::stopLoadingFrame(Frame* frame, InputSource)
125+
void UserInputBridge::stopLoadingFrame(Frame& frame, InputSource)
126126
{
127-
frame->loader().stopForUserCancel();
127+
frame.loader().stopForUserCancel();
128128
}
129129

130130
bool UserInputBridge::tryClosePage(InputSource)

Source/WebCore/replay/UserInputBridge.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ class UserInputBridge {
7676

7777
// Navigation APIs.
7878
WEBCORE_EXPORT void loadRequest(FrameLoadRequest&&, InputSource = InputSource::User);
79-
WEBCORE_EXPORT void reloadFrame(Frame*, OptionSet<ReloadOption>, InputSource = InputSource::User);
80-
WEBCORE_EXPORT void stopLoadingFrame(Frame*, InputSource = InputSource::User);
79+
WEBCORE_EXPORT void reloadFrame(Frame&, OptionSet<ReloadOption>, InputSource = InputSource::User);
80+
WEBCORE_EXPORT void stopLoadingFrame(Frame&, InputSource = InputSource::User);
8181
WEBCORE_EXPORT bool tryClosePage(InputSource = InputSource::User);
8282

8383
private:

Source/WebKit/ChangeLog

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
2020-11-05 Alex Christensen <achristensen@webkit.org>
2+
3+
Add null checks effectively in UserInputBridge
4+
https://bugs.webkit.org/show_bug.cgi?id=218622
5+
<rdar://problem/70724960>
6+
7+
Reviewed by Wenson Hsieh.
8+
9+
* WebProcess/WebPage/WebPage.cpp:
10+
(WebKit::WebPage::stopLoadingFrame):
11+
(WebKit::WebPage::stopLoading):
12+
(WebKit::WebPage::reload):
13+
114
2020-11-05 Brent Fulgham <bfulgham@apple.com>
215

316
[macOS] Remove mdnsresponder access from WebKit processes

Source/WebKit/WebProcess/WebPage/WebPage.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1708,14 +1708,20 @@ void WebPage::stopLoadingFrame(FrameIdentifier frameID)
17081708
if (!frame)
17091709
return;
17101710

1711-
corePage()->userInputBridge().stopLoadingFrame(frame->coreFrame());
1711+
auto* coreFrame = frame->coreFrame();
1712+
if (!coreFrame || !m_page)
1713+
return;
1714+
1715+
m_page->userInputBridge().stopLoadingFrame(*coreFrame);
17121716
}
17131717

17141718
void WebPage::stopLoading()
17151719
{
1716-
SendStopResponsivenessTimer stopper;
1720+
if (!m_page || !m_mainFrame->coreFrame())
1721+
return;
17171722

1718-
corePage()->userInputBridge().stopLoadingFrame(m_mainFrame->coreFrame());
1723+
SendStopResponsivenessTimer stopper;
1724+
m_page->userInputBridge().stopLoadingFrame(*m_mainFrame->coreFrame());
17191725
}
17201726

17211727
bool WebPage::defersLoading() const
@@ -1736,7 +1742,10 @@ void WebPage::reload(uint64_t navigationID, uint32_t reloadOptions, SandboxExten
17361742
m_pendingNavigationID = navigationID;
17371743

17381744
m_sandboxExtensionTracker.beginReload(m_mainFrame.ptr(), WTFMove(sandboxExtensionHandle));
1739-
corePage()->userInputBridge().reloadFrame(m_mainFrame->coreFrame(), OptionSet<ReloadOption>::fromRaw(reloadOptions));
1745+
if (m_page && m_mainFrame->coreFrame())
1746+
m_page->userInputBridge().reloadFrame(*m_mainFrame->coreFrame(), OptionSet<ReloadOption>::fromRaw(reloadOptions));
1747+
else
1748+
ASSERT_NOT_REACHED();
17401749

17411750
if (m_pendingNavigationID) {
17421751
// This can happen if FrameLoader::reload() returns early because the document URL is empty.

0 commit comments

Comments
 (0)