Add DeviceProximityController to support Device Proximity Events.
https://bugs.webkit.org/show_bug.cgi?id=97630

Reviewed by Hajime Morita.

Source/WebCore:

Implement DeviceProximityController which is inherited from DeviceController to support Device Proximity Events.
DeviceProximityController has two major functionalities.
- When listener is added, DeviceProximityController stores DOMWindow pointer to m_listeners
  and start gathering proximity event.
- When DeviceProximityController receives a proximity event from client, fire an event using m_listeners.
In addition, setDeviceProximity function is added to Internals for layout test.

Tests: proximity/add-listener-from-callback.html
       proximity/basic-operation.html
       proximity/create-event.html
       proximity/event-after-navigation.html
       proximity/multiple-frames.html
       proximity/no-page-cache.html
       proximity/optional-event-properties.html
       proximity/updates.html
       proximity/window-property.html

* CMakeLists.txt:
* GNUmakefile.am:
* GNUmakefile.list.am:
* Modules/proximity/DeviceProximityClient.h: Added.
(WebCore):
(DeviceProximityClient):
(WebCore::DeviceProximityClient::~DeviceProximityClient):
* Modules/proximity/DeviceProximityController.cpp: Added.
(WebCore):
(WebCore::DeviceProximityController::DeviceProximityController):
(WebCore::DeviceProximityController::create):
(WebCore::DeviceProximityController::didChangeDeviceProximity):
(WebCore::DeviceProximityController::deviceProximityClient):
(WebCore::DeviceProximityController::hasLastData):
(WebCore::DeviceProximityController::getLastEvent):
(WebCore::DeviceProximityController::supplementName):
(WebCore::DeviceProximityController::from):
(WebCore::DeviceProximityController::isActiveAt):
(WebCore::provideDeviceProximityTo):
* Modules/proximity/DeviceProximityController.h: Added.
(WebCore):
(DeviceProximityController):
(WebCore::DeviceProximityController::~DeviceProximityController):
* Target.pri:
* WebCore.gyp/WebCore.gyp:
* WebCore.gypi:
* WebCore.pri:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.vcproj/WebCoreCommon.vsprops:
* WebCore.xcodeproj/project.pbxproj:
* history/PageCache.cpp:
When a page has Device Proximity Event Listener, it has not to be cached like Device Orientation.
(WebCore::logCanCachePageDecision):
(WebCore::PageCache::canCache):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::addEventListener):
(WebCore::DOMWindow::removeEventListener):
(WebCore::DOMWindow::removeAllEventListeners):
* testing/Internals.cpp:
(WebCore::Internals::setDeviceProximity):
(WebCore):
* testing/Internals.h:
(Internals):
* testing/Internals.idl:

Source/WebKit2:

Add initial WebDeviceProximityClient class which is inherited DeviceProximityClient.
But startUpdating and stopUpdating need to be implemented.

* CMakeLists.txt:
* WebProcess/WebCoreSupport/WebDeviceProximityClient.cpp: Added.
(WebKit):
(WebKit::WebDeviceProximityClient::WebDeviceProximityClient):
(WebKit::WebDeviceProximityClient::startUpdating):
(WebKit::WebDeviceProximityClient::stopUpdating):
(WebKit::WebDeviceProximityClient::hasLastData):
* WebProcess/WebCoreSupport/WebDeviceProximityClient.h: Added.
(WebKit):
(WebDeviceProximityClient):
(WebKit::WebDeviceProximityClient::~WebDeviceProximityClient):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):

LayoutTests:

Add layout test cases for the DeviceProximityController.

* proximity/add-listener-from-callback-expected.txt: Added.
* proximity/add-listener-from-callback.html: Added.
* proximity/basic-operation-expected.txt: Added.
* proximity/basic-operation.html: Added.
* proximity/create-event-expected.txt: Added.
* proximity/create-event.html: Added.
* proximity/event-after-navigation-expected.txt: Added.
* proximity/event-after-navigation.html: Added.
* proximity/multiple-frames-expected.txt: Added.
* proximity/multiple-frames.html: Added.
* proximity/no-page-cache-expected.txt: Added.
* proximity/no-page-cache.html: Added.
* proximity/optional-event-properties-expected.txt: Added.
* proximity/optional-event-properties.html: Added.
* proximity/resources/cached-page-1.html: Added.
* proximity/resources/cached-page-2.html: Added.
* proximity/resources/event-after-navigation-new.html: Added.
* proximity/updates-expected.txt: Added.
* proximity/updates.html: Added.
* proximity/window-property-expected.txt: Added.
* proximity/window-property.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139050 268f45cc-cd09-0410-ab3c-d52691b4dbfc