Index: content/browser/device_sensors/device_inertial_sensor_browsertest.cc |
diff --git a/content/browser/device_sensors/device_inertial_sensor_browsertest.cc b/content/browser/device_sensors/device_inertial_sensor_browsertest.cc |
index 373907e1347f19806cb213ced85aebe5faad09db..9c1bd6b91689b905d2e633226ce514b0d2294a17 100644 |
--- a/content/browser/device_sensors/device_inertial_sensor_browsertest.cc |
+++ b/content/browser/device_sensors/device_inertial_sensor_browsertest.cc |
@@ -2,14 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/command_line.h" |
#include "base/synchronization/waitable_event.h" |
#include "base/threading/platform_thread.h" |
#include "content/browser/device_sensors/data_fetcher_shared_memory.h" |
#include "content/browser/device_sensors/device_inertial_sensor_service.h" |
+#include "content/common/device_sensors/device_light_hardware_buffer.h" |
#include "content/common/device_sensors/device_motion_hardware_buffer.h" |
#include "content/common/device_sensors/device_orientation_hardware_buffer.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/web_contents.h" |
+#include "content/public/common/content_switches.h" |
#include "content/public/test/content_browser_test.h" |
#include "content/public/test/content_browser_test_utils.h" |
#include "content/public/test/test_navigation_observer.h" |
@@ -28,8 +31,9 @@ class FakeDataFetcher : public DataFetcherSharedMemory { |
stopped_orientation_(false, false), |
started_motion_(false, false), |
stopped_motion_(false, false), |
- sensor_data_available_(true) { |
- } |
+ started_light_(false, false), |
+ stopped_light_(false, false), |
+ sensor_data_available_(true) {} |
virtual ~FakeDataFetcher() { } |
virtual bool Start(ConsumerType consumer_type, void* buffer) OVERRIDE { |
@@ -56,6 +60,17 @@ class FakeDataFetcher : public DataFetcherSharedMemory { |
started_orientation_.Signal(); |
} |
break; |
+ case CONSUMER_TYPE_LIGHT: |
+ { |
+ DeviceLightHardwareBuffer* light_buffer = |
+ static_cast<DeviceLightHardwareBuffer*>(buffer); |
+ UpdateLight(light_buffer, |
+ sensor_data_available_ |
+ ? 100 |
+ : std::numeric_limits<double>::infinity()); |
+ started_light_.Signal(); |
+ } |
+ break; |
default: |
return false; |
} |
@@ -70,6 +85,9 @@ class FakeDataFetcher : public DataFetcherSharedMemory { |
case CONSUMER_TYPE_ORIENTATION: |
stopped_orientation_.Signal(); |
break; |
+ case CONSUMER_TYPE_LIGHT: |
+ stopped_light_.Signal(); |
+ break; |
default: |
return false; |
} |
@@ -140,10 +158,18 @@ class FakeDataFetcher : public DataFetcherSharedMemory { |
buffer->seqlock.WriteEnd(); |
} |
+ void UpdateLight(DeviceLightHardwareBuffer* buffer, double lux) { |
+ buffer->seqlock.WriteBegin(); |
+ buffer->data.value = lux; |
+ buffer->seqlock.WriteEnd(); |
+ } |
+ |
base::WaitableEvent started_orientation_; |
base::WaitableEvent stopped_orientation_; |
base::WaitableEvent started_motion_; |
base::WaitableEvent stopped_motion_; |
+ base::WaitableEvent started_light_; |
+ base::WaitableEvent stopped_light_; |
bool sensor_data_available_; |
private: |
@@ -195,13 +221,11 @@ class DeviceInertialSensorBrowserTest : public ContentBrowserTest { |
base::WaitableEvent io_loop_finished_event_; |
}; |
- |
IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, OrientationTest) { |
// The test page will register an event handler for orientation events, |
// expects to get an event with fake values, then removes the event |
// handler and navigates to #pass. |
- GURL test_url = GetTestUrl( |
- "device_orientation", "device_orientation_test.html"); |
+ GURL test_url = GetTestUrl("device_sensors", "device_orientation_test.html"); |
NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 2); |
EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref()); |
@@ -209,12 +233,29 @@ IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, OrientationTest) { |
fetcher_->stopped_orientation_.Wait(); |
} |
+IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, LightTest) { |
+ // The test page will register an event handler for light events, |
+ // expects to get an event with fake values, then removes the event |
+ // handler and navigates to #pass. |
+ GURL test_url = GetTestUrl("device_sensors", "device_light_test.html"); |
+ // TODO(riju): remove command line args when the feature goes stable |
timvolodine
2014/09/08 15:20:19
this looks a bit dense, could you add white line?
timvolodine
2014/09/08 15:20:19
nit "." at eol.
riju_
2014/09/09 14:01:17
Done.
riju_
2014/09/09 14:01:17
Done.
|
+ if (!CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableExperimentalWebPlatformFeatures)) |
timvolodine
2014/09/08 15:20:19
this still looks weird to me, I think indent +4sp
timvolodine
2014/09/08 15:20:19
also { } required when multiline
riju_
2014/09/09 14:01:17
Done.
riju_
2014/09/09 14:01:17
Done.
|
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ switches::kEnableExperimentalWebPlatformFeatures); |
+ |
+ NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 2); |
+ |
+ EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref()); |
+ fetcher_->started_light_.Wait(); |
+ fetcher_->stopped_light_.Wait(); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, MotionTest) { |
// The test page will register an event handler for motion events, |
// expects to get an event with fake values, then removes the event |
// handler and navigates to #pass. |
- GURL test_url = GetTestUrl( |
- "device_orientation", "device_motion_test.html"); |
+ GURL test_url = GetTestUrl("device_sensors", "device_motion_test.html"); |
NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 2); |
EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref()); |
@@ -222,6 +263,31 @@ IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, MotionTest) { |
fetcher_->stopped_motion_.Wait(); |
} |
+IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, LightNullTest) { |
+ // The test page will register an event handler for light events, |
+ // expects to get an event with null(Inf) values. This tests that the one-off |
+ // null-event still propagates to window after the alert is dismissed and |
+ // the callback is invoked which navigates to #pass. |
+ fetcher_->SetSensorDataAvailable(false); |
timvolodine
2014/09/08 15:20:19
nit : add empty line for readability?
riju_
2014/09/09 14:01:18
Done.
|
+ // TODO(riju): remove command line args when the feature goes stable |
+ if (!CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableExperimentalWebPlatformFeatures)) |
timvolodine
2014/09/08 15:20:19
{ .. }
riju_
2014/09/09 14:01:17
Done.
|
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ switches::kEnableExperimentalWebPlatformFeatures); |
+ |
+ TestNavigationObserver same_tab_observer(shell()->web_contents(), 2); |
+ |
+ GURL test_url = GetTestUrl("device_sensors", "device_light_null_test.html"); |
+ shell()->LoadURL(test_url); |
+ |
+ WaitForAlertDialogAndQuitAfterDelay(base::TimeDelta::FromMilliseconds(1000)); |
+ |
+ fetcher_->started_light_.Wait(); |
+ fetcher_->stopped_light_.Wait(); |
+ same_tab_observer.Wait(); |
+ EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref()); |
+} |
+ |
// Flaking in the android try bot. See http://crbug.com/360578. |
#if defined(OS_ANDROID) |
#define MAYBE_OrientationNullTestWithAlert DISABLED_OrientationNullTestWithAlert |
@@ -238,8 +304,8 @@ IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, |
fetcher_->SetSensorDataAvailable(false); |
TestNavigationObserver same_tab_observer(shell()->web_contents(), 2); |
- GURL test_url = GetTestUrl( |
- "device_orientation", "device_orientation_null_test_with_alert.html"); |
+ GURL test_url = GetTestUrl("device_sensors", |
+ "device_orientation_null_test_with_alert.html"); |
shell()->LoadURL(test_url); |
// TODO(timvolodine): investigate if it is possible to test this without |
@@ -268,8 +334,8 @@ IN_PROC_BROWSER_TEST_F(DeviceInertialSensorBrowserTest, |
fetcher_->SetSensorDataAvailable(false); |
TestNavigationObserver same_tab_observer(shell()->web_contents(), 2); |
- GURL test_url = GetTestUrl( |
- "device_orientation", "device_motion_null_test_with_alert.html"); |
+ GURL test_url = |
+ GetTestUrl("device_sensors", "device_motion_null_test_with_alert.html"); |
shell()->LoadURL(test_url); |
// TODO(timvolodine): investigate if it is possible to test this without |