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

Side by Side Diff: Source/core/page/FocusController.cpp

Issue 455223002: Make anchors mouse-focusable (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: De-duplicate using FocusController; update TestExpectations Created 6 years, 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nuanti Ltd. 3 * Copyright (C) 2008 Nuanti Ltd.
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 695 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 706
707 clearSelectionIfNeeded(oldFocusedFrame.get(), toLocalFrame(newFocusedFrame.g et()), element); 707 clearSelectionIfNeeded(oldFocusedFrame.get(), toLocalFrame(newFocusedFrame.g et()), element);
708 708
709 if (oldDocument && oldDocument != newDocument) 709 if (oldDocument && oldDocument != newDocument)
710 oldDocument->setFocusedElement(nullptr); 710 oldDocument->setFocusedElement(nullptr);
711 711
712 if (newFocusedFrame && !newFocusedFrame->page()) { 712 if (newFocusedFrame && !newFocusedFrame->page()) {
713 setFocusedFrame(nullptr); 713 setFocusedFrame(nullptr);
714 return false; 714 return false;
715 } 715 }
716
717 if (type != FocusTypePage)
718 m_wasFocusedByMouse = type == FocusTypeMouse;
719
716 setFocusedFrame(newFocusedFrame); 720 setFocusedFrame(newFocusedFrame);
717 721
718 // Setting the focused node can result in losing our last reft to node when JS event handlers fire. 722 // Setting the focused node can result in losing our last reft to node when JS event handlers fire.
719 RefPtrWillBeRawPtr<Element> protect ALLOW_UNUSED = element; 723 RefPtrWillBeRawPtr<Element> protect ALLOW_UNUSED = element;
720 if (newDocument) { 724 if (newDocument) {
721 bool successfullyFocused = newDocument->setFocusedElement(element, type) ; 725 bool successfullyFocused = newDocument->setFocusedElement(element, type) ;
722 if (!successfullyFocused) 726 if (!successfullyFocused)
723 return false; 727 return false;
724 } 728 }
725 729
726 return true; 730 return true;
727 } 731 }
728 732
733 bool FocusController::setWasFocusedByMouse(bool wasFocusedByMouse)
734 {
735 if (m_wasFocusedByMouse != wasFocusedByMouse) {
736 m_wasFocusedByMouse = wasFocusedByMouse;
737 return true;
738 }
739 return false;
740 }
741
729 void FocusController::setActive(bool active) 742 void FocusController::setActive(bool active)
730 { 743 {
731 if (m_isActive == active) 744 if (m_isActive == active)
732 return; 745 return;
733 746
734 m_isActive = active; 747 m_isActive = active;
735 748
736 Frame* frame = focusedOrMainFrame(); 749 Frame* frame = focusedOrMainFrame();
737 if (frame->isLocalFrame()) 750 if (frame->isLocalFrame())
738 toLocalFrame(frame)->selection().pageActivationChanged(); 751 toLocalFrame(frame)->selection().pageActivationChanged();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 startingRect = nodeRectInAbsoluteCoordinates(container, true /* ignore b order */); 938 startingRect = nodeRectInAbsoluteCoordinates(container, true /* ignore b order */);
926 container = scrollableEnclosingBoxOrParentFrameForNodeInDirection(type, container); 939 container = scrollableEnclosingBoxOrParentFrameForNodeInDirection(type, container);
927 if (container && container->isDocumentNode()) 940 if (container && container->isDocumentNode())
928 toDocument(container)->updateLayoutIgnorePendingStylesheets(); 941 toDocument(container)->updateLayoutIgnorePendingStylesheets();
929 } while (!consumed && container); 942 } while (!consumed && container);
930 943
931 return consumed; 944 return consumed;
932 } 945 }
933 946
934 } // namespace blink 947 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698