Should report user input to PageThrottler
https://bugs.webkit.org/show_bug.cgi?id=128398

Reviewed by Tim Horton.

Make sure we wake from AppNap if there is user interaction.

Source/WebCore: 

* page/PageThrottler.h:
(WebCore::PageThrottler::didReceiveUserInput):
(WebCore::PageThrottler::pluginDidEvaluate):
    - added, these call reportInterestingEvent()

Source/WebKit2: 

* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::evaluate):
    - reportInterestingEvent() -> pluginDidEvaluate()
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mouseEvent):
(WebKit::WebPage::wheelEvent):
(WebKit::WebPage::keyEvent):
    - call didReceiveUserInput()



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@163647 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index a7c65c0..f5a685c 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2014-02-07  Gavin Barraclough  <barraclough@apple.com>
+
+        Should report user input to PageThrottler
+        https://bugs.webkit.org/show_bug.cgi?id=128398
+
+        Reviewed by Tim Horton.
+
+        Make sure we wake from AppNap if there is user interaction.
+
+        * page/PageThrottler.h:
+        (WebCore::PageThrottler::didReceiveUserInput):
+        (WebCore::PageThrottler::pluginDidEvaluate):
+            - added, these call reportInterestingEvent()
+
 2014-02-07  Jer Noble  <jer.noble@apple.com>
 
         Unreviewed build fix for 32-bit iOS.
diff --git a/Source/WebCore/page/PageThrottler.h b/Source/WebCore/page/PageThrottler.h
index ed048a8..894bd08 100644
--- a/Source/WebCore/page/PageThrottler.h
+++ b/Source/WebCore/page/PageThrottler.h
@@ -50,7 +50,8 @@
 
     void setIsVisuallyIdle(bool);
 
-    void reportInterestingEvent();
+    void didReceiveUserInput() { reportInterestingEvent(); }
+    void pluginDidEvaluate() { reportInterestingEvent(); }
 
 private:
     enum PageThrottleState {
@@ -63,6 +64,8 @@
     void addActivityToken(PageActivityAssertionToken&);
     void removeActivityToken(PageActivityAssertionToken&);
 
+    void reportInterestingEvent();
+
     void startThrottleHysteresisTimer();
     void stopThrottleHysteresisTimer();
     void throttleHysteresisTimerFired(Timer<PageThrottler>&);
diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog
index 11021a6..f9422a4 100644
--- a/Source/WebKit2/ChangeLog
+++ b/Source/WebKit2/ChangeLog
@@ -1,3 +1,21 @@
+2014-02-07  Gavin Barraclough  <barraclough@apple.com>
+
+        Should report user input to PageThrottler
+        https://bugs.webkit.org/show_bug.cgi?id=128398
+
+        Reviewed by Tim Horton.
+
+        Make sure we wake from AppNap if there is user interaction.
+
+        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
+        (WebKit::NPRuntimeObjectMap::evaluate):
+            - reportInterestingEvent() -> pluginDidEvaluate()
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::mouseEvent):
+        (WebKit::WebPage::wheelEvent):
+        (WebKit::WebPage::keyEvent):
+            - call didReceiveUserInput()
+
 2014-02-07  Dean Jackson  <dino@apple.com>
 
         WebGL doesn't update with remotely hosted layers
@@ -60,7 +78,7 @@
         Reviewed by Tim Horton.
 
         * Shared/WebPreferencesStore.h:
-            - pageVisibilityBasedProcessSuppressionEnabled shoud default to true.
+            - pageVisibilityBasedProcessSuppressionEnabled should default to true.
 
 2014-02-07  Tim Horton  <timothy_horton@apple.com>
 
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp
index 8b16ca5..d25db00 100644
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp
+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp
@@ -191,7 +191,7 @@
 
     if (m_pluginView && !m_pluginView->isBeingDestroyed()) {
         if (Page* page = m_pluginView->frame()->page())
-            page->pageThrottler().reportInterestingEvent();
+            page->pageThrottler().pluginDidEvaluate();
     }
 
     ExecState* exec = globalObject->globalExec();
diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
index abc1c15..b0ea22b 100644
--- a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -118,6 +118,7 @@
 #include <WebCore/MainFrame.h>
 #include <WebCore/MouseEvent.h>
 #include <WebCore/Page.h>
+#include <WebCore/PageThrottler.h>
 #include <WebCore/PlatformKeyboardEvent.h>
 #include <WebCore/PluginDocument.h>
 #include <WebCore/PrintContext.h>
@@ -1665,6 +1666,8 @@
 
 void WebPage::mouseEvent(const WebMouseEvent& mouseEvent)
 {
+    m_page->pageThrottler().didReceiveUserInput();
+
 #if ENABLE(CONTEXT_MENUS)
     // Don't try to handle any pending mouse events if a context menu is showing.
     if (m_isShowingContextMenu) {
@@ -1745,6 +1748,8 @@
 
 void WebPage::wheelEvent(const WebWheelEvent& wheelEvent)
 {
+    m_page->pageThrottler().didReceiveUserInput();
+
     bool handled = false;
 
     if (canHandleUserEvents()) {
@@ -1774,6 +1779,8 @@
 
 void WebPage::keyEvent(const WebKeyboardEvent& keyboardEvent)
 {
+    m_page->pageThrottler().didReceiveUserInput();
+
     bool handled = false;
 
     if (canHandleUserEvents()) {