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

Side by Side Diff: Source/core/frame/LocalDOMWindow.cpp

Issue 874283003: Have WebFrameClient::suddenTerminationDisablerChanged return a boolean (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed nits Created 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | Source/core/loader/FrameLoaderClient.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 222
223 static DOMWindowSet& windowsWithBeforeUnloadEventListeners() 223 static DOMWindowSet& windowsWithBeforeUnloadEventListeners()
224 { 224 {
225 DEFINE_STATIC_LOCAL(DOMWindowSet, windowsWithBeforeUnloadEventListeners, ()) ; 225 DEFINE_STATIC_LOCAL(DOMWindowSet, windowsWithBeforeUnloadEventListeners, ()) ;
226 return windowsWithBeforeUnloadEventListeners; 226 return windowsWithBeforeUnloadEventListeners;
227 } 227 }
228 228
229 static void addUnloadEventListener(LocalDOMWindow* domWindow) 229 static void addUnloadEventListener(LocalDOMWindow* domWindow)
230 { 230 {
231 DOMWindowSet& set = windowsWithUnloadEventListeners(); 231 DOMWindowSet& set = windowsWithUnloadEventListeners();
232 if (set.isEmpty()) 232 if (set.isEmpty()) {
233 disableSuddenTermination(); 233 disableSuddenTermination();
234 if (domWindow->frame()) {
235 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
236 true, FrameLoaderClient::UnloadHandler);
237 }
238 }
234 set.add(domWindow); 239 set.add(domWindow);
235 if (domWindow->frame()) {
236 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged(
237 1, FrameLoaderClient::UnloadHandler);
238 }
239 } 240 }
240 241
241 static void removeUnloadEventListener(LocalDOMWindow* domWindow) 242 static void removeUnloadEventListener(LocalDOMWindow* domWindow)
242 { 243 {
243 DOMWindowSet& set = windowsWithUnloadEventListeners(); 244 DOMWindowSet& set = windowsWithUnloadEventListeners();
244 DOMWindowSet::iterator it = set.find(domWindow); 245 DOMWindowSet::iterator it = set.find(domWindow);
245 if (it == set.end()) 246 if (it == set.end())
246 return; 247 return;
247 set.remove(it); 248 set.remove(it);
248 if (set.isEmpty()) 249 if (set.isEmpty()) {
249 enableSuddenTermination(); 250 enableSuddenTermination();
250 if (domWindow->frame()) { 251 if (domWindow->frame()) {
251 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged( 252 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
252 -1, FrameLoaderClient::UnloadHandler); 253 false, FrameLoaderClient::UnloadHandler);
254 }
253 } 255 }
254 } 256 }
255 257
256 static void removeAllUnloadEventListeners(LocalDOMWindow* domWindow) 258 static void removeAllUnloadEventListeners(LocalDOMWindow* domWindow)
257 { 259 {
258 DOMWindowSet& set = windowsWithUnloadEventListeners(); 260 DOMWindowSet& set = windowsWithUnloadEventListeners();
259 DOMWindowSet::iterator it = set.find(domWindow); 261 DOMWindowSet::iterator it = set.find(domWindow);
260 if (it == set.end()) 262 if (it == set.end())
261 return; 263 return;
262 int numHandlers = set.count(domWindow);
263 set.removeAll(it); 264 set.removeAll(it);
264 if (set.isEmpty()) 265 if (set.isEmpty()) {
265 enableSuddenTermination(); 266 enableSuddenTermination();
266 if (domWindow->frame()) { 267 if (domWindow->frame()) {
267 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged( 268 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
268 -numHandlers, FrameLoaderClient::UnloadHandler); 269 false, FrameLoaderClient::UnloadHandler);
270 }
269 } 271 }
270 } 272 }
271 273
272 static void addBeforeUnloadEventListener(LocalDOMWindow* domWindow) 274 static void addBeforeUnloadEventListener(LocalDOMWindow* domWindow)
273 { 275 {
274 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners(); 276 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners();
275 if (set.isEmpty()) 277 if (set.isEmpty()) {
276 disableSuddenTermination(); 278 disableSuddenTermination();
279 if (domWindow->frame()) {
280 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
281 true, FrameLoaderClient::BeforeUnloadHandler);
282 }
283 }
277 set.add(domWindow); 284 set.add(domWindow);
278 if (domWindow->frame()) {
279 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged(
280 1, FrameLoaderClient::BeforeUnloadHandler);
281 }
282 } 285 }
283 286
284 static void removeBeforeUnloadEventListener(LocalDOMWindow* domWindow) 287 static void removeBeforeUnloadEventListener(LocalDOMWindow* domWindow)
285 { 288 {
286 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners(); 289 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners();
287 DOMWindowSet::iterator it = set.find(domWindow); 290 DOMWindowSet::iterator it = set.find(domWindow);
288 if (it == set.end()) 291 if (it == set.end())
289 return; 292 return;
290 set.remove(it); 293 set.remove(it);
291 if (set.isEmpty()) 294 if (set.isEmpty()) {
292 enableSuddenTermination(); 295 enableSuddenTermination();
293 if (domWindow->frame()) { 296 if (domWindow->frame()) {
294 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged( 297 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
295 -1, FrameLoaderClient::BeforeUnloadHandler); 298 false, FrameLoaderClient::BeforeUnloadHandler);
299 }
296 } 300 }
297 } 301 }
298 302
299 static void removeAllBeforeUnloadEventListeners(LocalDOMWindow* domWindow) 303 static void removeAllBeforeUnloadEventListeners(LocalDOMWindow* domWindow)
300 { 304 {
301 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners(); 305 DOMWindowSet& set = windowsWithBeforeUnloadEventListeners();
302 DOMWindowSet::iterator it = set.find(domWindow); 306 DOMWindowSet::iterator it = set.find(domWindow);
303 if (it == set.end()) 307 if (it == set.end())
304 return; 308 return;
305 int numHandlers = set.count(domWindow);
306 set.removeAll(it); 309 set.removeAll(it);
307 if (set.isEmpty()) 310 if (set.isEmpty()) {
308 enableSuddenTermination(); 311 enableSuddenTermination();
309 if (domWindow->frame()) { 312 if (domWindow->frame()) {
310 domWindow->frame()->loader().client()->suddenTerminationDisablerChanged( 313 domWindow->frame()->loader().client()->suddenTerminationDisablerChan ged(
311 -numHandlers, FrameLoaderClient::BeforeUnloadHandler); 314 false, FrameLoaderClient::BeforeUnloadHandler);
315 }
312 } 316 }
313 } 317 }
314 318
315 static bool allowsBeforeUnloadListeners(LocalDOMWindow* window) 319 static bool allowsBeforeUnloadListeners(LocalDOMWindow* window)
316 { 320 {
317 ASSERT_ARG(window, window); 321 ASSERT_ARG(window, window);
318 LocalFrame* frame = window->frame(); 322 LocalFrame* frame = window->frame();
319 if (!frame) 323 if (!frame)
320 return false; 324 return false;
321 return frame->isMainFrame(); 325 return frame->isMainFrame();
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after
1831 return m_frameObserver->frame(); 1835 return m_frameObserver->frame();
1832 } 1836 }
1833 1837
1834 v8::Handle<v8::Object> LocalDOMWindow::wrap(v8::Handle<v8::Object> creationConte xt, v8::Isolate* isolate) 1838 v8::Handle<v8::Object> LocalDOMWindow::wrap(v8::Handle<v8::Object> creationConte xt, v8::Isolate* isolate)
1835 { 1839 {
1836 ASSERT_NOT_REACHED(); // LocalDOMWindow has [Custom=ToV8]. 1840 ASSERT_NOT_REACHED(); // LocalDOMWindow has [Custom=ToV8].
1837 return v8::Handle<v8::Object>(); 1841 return v8::Handle<v8::Object>();
1838 } 1842 }
1839 1843
1840 } // namespace blink 1844 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | Source/core/loader/FrameLoaderClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698