Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(765)

Unified Diff: Source/core/frame/DOMWindow.cpp

Issue 176763009: Have DOMWindow deal with references instead of pointers when possible (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/frame/DOMWindow.h ('k') | Source/core/html/HTMLFormElement.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/frame/DOMWindow.cpp
diff --git a/Source/core/frame/DOMWindow.cpp b/Source/core/frame/DOMWindow.cpp
index 5373088b201620f65f01341a36446d31f30cd4f2..9fe8f9e1ac4b3b14f3aaf7fcfc39f7b5df8fcd40 100644
--- a/Source/core/frame/DOMWindow.cpp
+++ b/Source/core/frame/DOMWindow.cpp
@@ -112,8 +112,8 @@ namespace WebCore {
class PostMessageTimer FINAL : public SuspendableTimer {
public:
- PostMessageTimer(DOMWindow* window, PassRefPtr<SerializedScriptValue> message, const String& sourceOrigin, PassRefPtr<DOMWindow> source, PassOwnPtr<MessagePortChannelArray> channels, SecurityOrigin* targetOrigin, PassRefPtr<ScriptCallStack> stackTrace)
- : SuspendableTimer(window->document())
+ PostMessageTimer(DOMWindow& window, PassRefPtr<SerializedScriptValue> message, const String& sourceOrigin, PassRefPtr<DOMWindow> source, PassOwnPtr<MessagePortChannelArray> channels, SecurityOrigin* targetOrigin, PassRefPtr<ScriptCallStack> stackTrace)
+ : SuspendableTimer(window.document())
, m_window(window)
, m_message(message)
, m_origin(sourceOrigin)
@@ -252,13 +252,12 @@ unsigned DOMWindow::pendingUnloadEventListeners() const
// 3) Constrains the window rect to within the top and left boundaries of the available screen rect.
// 4) Constrains the window rect to within the bottom and right boundaries of the available screen rect.
// 5) Translate the window rect coordinates to be within the coordinate space of the screen.
-FloatRect DOMWindow::adjustWindowRect(LocalFrame* frame, const FloatRect& pendingChanges)
+FloatRect DOMWindow::adjustWindowRect(LocalFrame& frame, const FloatRect& pendingChanges)
{
- ASSERT(frame);
- FrameHost* host = frame->host();
+ FrameHost* host = frame.host();
ASSERT(host);
- FloatRect screen = screenAvailableRect(frame->view());
+ FloatRect screen = screenAvailableRect(frame.view());
FloatRect window = host->chrome().windowRect();
// Make sure we're in a valid state before adjusting dimensions.
@@ -295,27 +294,24 @@ FloatRect DOMWindow::adjustWindowRect(LocalFrame* frame, const FloatRect& pendin
return window;
}
-bool DOMWindow::allowPopUp(LocalFrame* firstFrame)
+bool DOMWindow::allowPopUp(LocalFrame& firstFrame)
{
- ASSERT(firstFrame);
-
if (UserGestureIndicator::processingUserGesture())
return true;
- Settings* settings = firstFrame->settings();
+ Settings* settings = firstFrame.settings();
return settings && settings->javaScriptCanOpenWindowsAutomatically();
}
bool DOMWindow::allowPopUp()
{
- return m_frame && allowPopUp(m_frame);
+ return m_frame && allowPopUp(*m_frame);
}
-DOMWindow::DOMWindow(LocalFrame* frame)
- : FrameDestructionObserver(frame)
+DOMWindow::DOMWindow(LocalFrame& frame)
+ : FrameDestructionObserver(&frame)
, m_shouldPrintWhenFinishedLoading(false)
{
- ASSERT(frame);
ScriptWrappable::init(this);
}
@@ -451,7 +447,7 @@ void DOMWindow::enqueuePopstateEvent(PassRefPtr<SerializedScriptValue> stateObje
return;
// FIXME: https://bugs.webkit.org/show_bug.cgi?id=36202 Popstate event needs to fire asynchronously
- dispatchEvent(PopStateEvent::create(stateObject, history()));
+ dispatchEvent(PopStateEvent::create(stateObject, &history()));
}
void DOMWindow::statePopped(PassRefPtr<SerializedScriptValue> stateObject)
@@ -603,73 +599,73 @@ int DOMWindow::orientation() const
return m_frame->orientation();
}
-Screen* DOMWindow::screen() const
+Screen& DOMWindow::screen() const
{
if (!m_screen)
m_screen = Screen::create(m_frame);
- return m_screen.get();
+ return *m_screen;
}
-History* DOMWindow::history() const
+History& DOMWindow::history() const
{
if (!m_history)
m_history = History::create(m_frame);
- return m_history.get();
+ return *m_history;
}
-BarProp* DOMWindow::locationbar() const
+BarProp& DOMWindow::locationbar() const
{
UseCounter::count(document(), UseCounter::BarPropLocationbar);
if (!m_locationbar)
m_locationbar = BarProp::create(m_frame, BarProp::Locationbar);
- return m_locationbar.get();
+ return *m_locationbar;
}
-BarProp* DOMWindow::menubar() const
+BarProp& DOMWindow::menubar() const
{
UseCounter::count(document(), UseCounter::BarPropMenubar);
if (!m_menubar)
m_menubar = BarProp::create(m_frame, BarProp::Menubar);
- return m_menubar.get();
+ return *m_menubar;
}
-BarProp* DOMWindow::personalbar() const
+BarProp& DOMWindow::personalbar() const
{
UseCounter::count(document(), UseCounter::BarPropPersonalbar);
if (!m_personalbar)
m_personalbar = BarProp::create(m_frame, BarProp::Personalbar);
- return m_personalbar.get();
+ return *m_personalbar;
}
-BarProp* DOMWindow::scrollbars() const
+BarProp& DOMWindow::scrollbars() const
{
UseCounter::count(document(), UseCounter::BarPropScrollbars);
if (!m_scrollbars)
m_scrollbars = BarProp::create(m_frame, BarProp::Scrollbars);
- return m_scrollbars.get();
+ return *m_scrollbars;
}
-BarProp* DOMWindow::statusbar() const
+BarProp& DOMWindow::statusbar() const
{
UseCounter::count(document(), UseCounter::BarPropStatusbar);
if (!m_statusbar)
m_statusbar = BarProp::create(m_frame, BarProp::Statusbar);
- return m_statusbar.get();
+ return *m_statusbar;
}
-BarProp* DOMWindow::toolbar() const
+BarProp& DOMWindow::toolbar() const
{
UseCounter::count(document(), UseCounter::BarPropToolbar);
if (!m_toolbar)
m_toolbar = BarProp::create(m_frame, BarProp::Toolbar);
- return m_toolbar.get();
+ return *m_toolbar;
}
-Console* DOMWindow::console() const
+Console& DOMWindow::console() const
{
if (!m_console)
m_console = Console::create(m_frame);
- return m_console.get();
+ return *m_console;
}
PageConsole* DOMWindow::pageConsole() const
@@ -688,25 +684,25 @@ ApplicationCache* DOMWindow::applicationCache() const
return m_applicationCache.get();
}
-Navigator* DOMWindow::navigator() const
+Navigator& DOMWindow::navigator() const
{
if (!m_navigator)
m_navigator = Navigator::create(m_frame);
- return m_navigator.get();
+ return *m_navigator;
}
-Performance* DOMWindow::performance() const
+Performance& DOMWindow::performance() const
{
if (!m_performance)
m_performance = Performance::create(m_frame);
- return m_performance.get();
+ return *m_performance;
}
-Location* DOMWindow::location() const
+Location& DOMWindow::location() const
{
if (!m_location)
m_location = Location::create(m_frame);
- return m_location.get();
+ return *m_location;
}
Storage* DOMWindow::sessionStorage(ExceptionState& exceptionState) const
@@ -834,7 +830,7 @@ void DOMWindow::postMessage(PassRefPtr<SerializedScriptValue> message, const Mes
stackTrace = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true);
// Schedule the message.
- PostMessageTimer* timer = new PostMessageTimer(this, message, sourceOrigin, source, channels.release(), target.get(), stackTrace.release());
+ PostMessageTimer* timer = new PostMessageTimer(*this, message, sourceOrigin, source, channels.release(), target.get(), stackTrace.release());
timer->startOneShot(0);
timer->suspendIfNeeded();
}
@@ -1265,11 +1261,11 @@ Document* DOMWindow::document() const
return m_document.get();
}
-PassRefPtr<StyleMedia> DOMWindow::styleMedia() const
+StyleMedia& DOMWindow::styleMedia() const
{
if (!m_media)
m_media = StyleMedia::create(m_frame);
- return m_media.get();
+ return *m_media;
}
PassRefPtr<CSSStyleDeclaration> DOMWindow::getComputedStyle(Element* elt, const String& pseudoElt) const
@@ -1404,7 +1400,7 @@ void DOMWindow::moveBy(float x, float y) const
FloatRect windowRect = host->chrome().windowRect();
windowRect.move(x, y);
// Security check (the spec talks about UniversalBrowserWrite to disable this check...)
- host->chrome().setWindowRect(adjustWindowRect(m_frame, windowRect));
+ host->chrome().setWindowRect(adjustWindowRect(*m_frame, windowRect));
}
void DOMWindow::moveTo(float x, float y) const
@@ -1419,7 +1415,7 @@ void DOMWindow::moveTo(float x, float y) const
FloatRect windowRect = host->chrome().windowRect();
windowRect.setLocation(FloatPoint(x, y));
// Security check (the spec talks about UniversalBrowserWrite to disable this check...)
- host->chrome().setWindowRect(adjustWindowRect(m_frame, windowRect));
+ host->chrome().setWindowRect(adjustWindowRect(*m_frame, windowRect));
}
void DOMWindow::resizeBy(float x, float y) const
@@ -1434,7 +1430,7 @@ void DOMWindow::resizeBy(float x, float y) const
FloatRect fr = host->chrome().windowRect();
FloatSize dest = fr.size() + FloatSize(x, y);
FloatRect update(fr.location(), dest);
- host->chrome().setWindowRect(adjustWindowRect(m_frame, update));
+ host->chrome().setWindowRect(adjustWindowRect(*m_frame, update));
}
void DOMWindow::resizeTo(float width, float height) const
@@ -1449,7 +1445,7 @@ void DOMWindow::resizeTo(float width, float height) const
FloatRect fr = host->chrome().windowRect();
FloatSize dest = FloatSize(width, height);
FloatRect update(fr.location(), dest);
- host->chrome().setWindowRect(adjustWindowRect(m_frame, update));
+ host->chrome().setWindowRect(adjustWindowRect(*m_frame, update));
}
int DOMWindow::requestAnimationFrame(PassOwnPtr<RequestAnimationFrameCallback> callback)
@@ -1474,11 +1470,11 @@ void DOMWindow::cancelAnimationFrame(int id)
d->cancelAnimationFrame(id);
}
-DOMWindowCSS* DOMWindow::css()
+DOMWindowCSS& DOMWindow::css() const
{
if (!m_css)
m_css = DOMWindowCSS::create();
- return m_css.get();
+ return *m_css;
}
static void didAddStorageEventListener(DOMWindow* window)
@@ -1631,7 +1627,7 @@ void DOMWindow::setLocation(const String& urlString, DOMWindow* callingWindow, D
if (completedURL.isNull())
return;
- if (isInsecureScriptAccess(callingWindow, completedURL))
+ if (isInsecureScriptAccess(*callingWindow, completedURL))
return;
// We want a new history item if we are processing a user gesture.
@@ -1717,7 +1713,7 @@ String DOMWindow::crossDomainAccessErrorMessage(DOMWindow* callingWindow)
return message + "Protocols, domains, and ports must match.";
}
-bool DOMWindow::isInsecureScriptAccess(DOMWindow* callingWindow, const String& urlString)
+bool DOMWindow::isInsecureScriptAccess(DOMWindow& callingWindow, const String& urlString)
{
if (!protocolIsJavaScript(urlString))
return false;
@@ -1728,16 +1724,16 @@ bool DOMWindow::isInsecureScriptAccess(DOMWindow* callingWindow, const String& u
// LocalFrame on navigation: https://bugs.webkit.org/show_bug.cgi?id=62054
if (isCurrentlyDisplayedInFrame()) {
// FIXME: Is there some way to eliminate the need for a separate "callingWindow == this" check?
- if (callingWindow == this)
+ if (&callingWindow == this)
return false;
// FIXME: The name canAccess seems to be a roundabout way to ask "can execute script".
// Can we name the SecurityOrigin function better to make this more clear?
- if (callingWindow->document()->securityOrigin()->canAccess(document()->securityOrigin()))
+ if (callingWindow.document()->securityOrigin()->canAccess(document()->securityOrigin()))
return false;
}
- printErrorMessage(crossDomainAccessErrorMessage(callingWindow));
+ printErrorMessage(crossDomainAccessErrorMessage(&callingWindow));
return true;
}
@@ -1777,7 +1773,7 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin
KURL completedURL = firstFrame->document()->completeURL(urlString);
- if (targetFrame->domWindow()->isInsecureScriptAccess(callingWindow, completedURL))
+ if (targetFrame->domWindow()->isInsecureScriptAccess(*callingWindow, completedURL))
return targetFrame->domWindow();
if (urlString.isEmpty())
@@ -1794,7 +1790,7 @@ PassRefPtr<DOMWindow> DOMWindow::open(const String& urlString, const AtomicStrin
}
WindowFeatures windowFeatures(windowFeaturesString);
- LocalFrame* result = createWindow(urlString, frameName, windowFeatures, callingWindow, firstFrame, m_frame);
+ LocalFrame* result = createWindow(urlString, frameName, windowFeatures, *callingWindow, *firstFrame, *m_frame);
return result ? result->domWindow() : 0;
}
« no previous file with comments | « Source/core/frame/DOMWindow.h ('k') | Source/core/html/HTMLFormElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698