Changeset 148508 in webkit
- Timestamp:
- Apr 16, 2013 3:05:29 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r148507 r148508 1 2013-04-13 Andreas Kling <akling@apple.com> 2 3 REGRESSION(r148128): window.resizeTo doesn't work from Safari address bar. 4 <rdar://problem/13635894> 5 <http://webkit.org/b/114561> 6 7 Reviewed by Sam Weinig. 8 9 Suppressing window geometry changes while any user gesture is active was a bit too restrictive, 10 and broke legitimate use-cases. Narrow it down to checking EventHandler::mousePressed(). 11 12 No test yet, adding one is tracked by <http://webkit.org/b/114561>. 13 14 * page/DOMWindow.cpp: 15 (WebCore::DOMWindow::allowedToChangeWindowGeometry): 16 17 Added to share code between all DOMWindow functions that alter window geometry. 18 19 (WebCore::DOMWindow::moveBy): 20 (WebCore::DOMWindow::moveTo): 21 (WebCore::DOMWindow::resizeBy): 22 (WebCore::DOMWindow::resizeTo): 23 1 24 2013-04-16 Manuel Rego Casasnovas <rego@igalia.com> 2 25 -
trunk/Source/WebCore/page/DOMWindow.cpp
r148467 r148508 1 1 /* 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved.2 * Copyright (C) 2006, 2007, 2008, 2010, 2013 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 4 4 * … … 1451 1451 } 1452 1452 1453 bool DOMWindow::allowedToChangeWindowGeometry() const 1454 { 1455 if (!m_frame) 1456 return false; 1457 const Page* page = m_frame->page(); 1458 if (!page) 1459 return false; 1460 if (m_frame != page->mainFrame()) 1461 return false; 1462 // Prevent web content from tricking the user into initiating a drag. 1463 if (m_frame->eventHandler()->mousePressed()) 1464 return false; 1465 return true; 1466 } 1467 1453 1468 void DOMWindow::moveBy(float x, float y) const 1454 1469 { 1455 if (UserGestureIndicator::processingUserGesture()) 1456 return; 1457 1458 if (!m_frame) 1470 if (!allowedToChangeWindowGeometry()) 1459 1471 return; 1460 1472 1461 1473 Page* page = m_frame->page(); 1462 if (!page)1463 return;1464 1465 if (m_frame != page->mainFrame())1466 return;1467 1468 1474 FloatRect fr = page->chrome()->windowRect(); 1469 1475 FloatRect update = fr; … … 1475 1481 void DOMWindow::moveTo(float x, float y) const 1476 1482 { 1477 if (UserGestureIndicator::processingUserGesture()) 1478 return; 1479 1480 if (!m_frame) 1483 if (!allowedToChangeWindowGeometry()) 1481 1484 return; 1482 1485 1483 1486 Page* page = m_frame->page(); 1484 if (!page)1485 return;1486 1487 if (m_frame != page->mainFrame())1488 return;1489 1490 1487 FloatRect fr = page->chrome()->windowRect(); 1491 1488 FloatRect sr = screenAvailableRect(page->mainFrame()->view()); … … 1499 1496 void DOMWindow::resizeBy(float x, float y) const 1500 1497 { 1501 if (UserGestureIndicator::processingUserGesture()) 1502 return; 1503 1504 if (!m_frame) 1498 if (!allowedToChangeWindowGeometry()) 1505 1499 return; 1506 1500 1507 1501 Page* page = m_frame->page(); 1508 if (!page)1509 return;1510 1511 if (m_frame != page->mainFrame())1512 return;1513 1514 1502 FloatRect fr = page->chrome()->windowRect(); 1515 1503 FloatSize dest = fr.size() + FloatSize(x, y); … … 1520 1508 void DOMWindow::resizeTo(float width, float height) const 1521 1509 { 1522 if (UserGestureIndicator::processingUserGesture()) 1523 return; 1524 1525 if (!m_frame) 1510 if (!allowedToChangeWindowGeometry()) 1526 1511 return; 1527 1512 1528 1513 Page* page = m_frame->page(); 1529 if (!page)1530 return;1531 1532 if (m_frame != page->mainFrame())1533 return;1534 1535 1514 FloatRect fr = page->chrome()->windowRect(); 1536 1515 FloatSize dest = FloatSize(width, height); -
trunk/Source/WebCore/page/DOMWindow.h
r146208 r148508 415 415 416 416 Page* page(); 417 bool allowedToChangeWindowGeometry() const; 417 418 418 419 virtual void frameDestroyed() OVERRIDE;
Note: See TracChangeset
for help on using the changeset viewer.