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

Issue 2368193003: [sensors] Introduce asynchronous way to create sensors. (Closed)

Created:
4 years, 2 months ago by maksims (do not use this acc)
Modified:
4 years, 2 months ago
CC:
chromium-reviews, riju_, darktears
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

[sensors] Introduce asynchronous way to create sensors. As long as sensors implementation on Linux/ChromeOS will be based on reading from files (sensors' files are located in /sys/dev/iio/devices), asynchronous way of creating sensors is introduced with this patch. To be more specific, the asynchronous path is needed because sensors' existence will be checked by blocking IO methods in case of Linux/ChromeOS and in order to be able to say whether a sensor exists or not, asynchronous path will be used. In case of Android and Mac, callbacks will be called immediately as soon as a sensor manager in Android or IOServiceGetMatchingService in Mac returns a sensor object or nullptr. How it works: As soon as a request for a new sensor is received, callbacks are stored into a vector which is pushed into a map with a type key and the vector itself. If no callback has been stored before, CreateSensorInternal() method is called. Then: *Linux/ChromeOS (under development): a new thread is created which will handle concrete sensors creation. *Android: when CreateSensorInternal() is called, java code is called and everything is handled by the sensor manager, which returns synchronously. Once sensor found, it is returned. Otherwise, nullptr is returned. *Mac (under development) https://codereview.chromium.org/2332903002/: everything is handled by IOServiceGetMatchingService, which returns synchronously. BUG=606766 Committed: https://crrev.com/85cc22d79580bc5ad58db03ff3e4fb8f9db539a6 Cr-Commit-Position: refs/heads/master@{#423127}

Patch Set 1 #

Total comments: 18

Patch Set 2 : Mikhail's comments #

Patch Set 3 : more comments #

Patch Set 4 : Added a temporary dependency for dependent patch that is based on top of this cl. Reason: cannot ha… #

Total comments: 11

Patch Set 5 : Tim's comments #

Total comments: 6

Patch Set 6 : avoid potential future reentrancy problems #

Total comments: 3

Patch Set 7 : fix unittests #

Patch Set 8 : PostTask in helper function #

Patch Set 9 : typo #

Total comments: 1

Patch Set 10 : more typos #

Patch Set 11 : A comment from Mikhail #

Unified diffs Side-by-side diffs Delta from patch set Stats (+203 lines, -65 lines) Patch
M device/generic_sensor/fake_platform_sensor_provider.h View 1 2 3 4 5 6 1 chunk +4 lines, -4 lines 0 comments Download
M device/generic_sensor/fake_platform_sensor_provider.cc View 1 2 3 4 5 6 1 chunk +6 lines, -3 lines 0 comments Download
M device/generic_sensor/platform_sensor_provider_android.cc View 2 chunks +12 lines, -10 lines 0 comments Download
M device/generic_sensor/platform_sensor_provider_base.h View 1 2 3 4 5 2 chunks +16 lines, -7 lines 0 comments Download
M device/generic_sensor/platform_sensor_provider_base.cc View 1 2 3 4 2 chunks +42 lines, -16 lines 0 comments Download
M device/generic_sensor/platform_sensor_provider_unittest.cc View 1 2 3 4 5 6 11 chunks +77 lines, -18 lines 0 comments Download
M device/generic_sensor/sensor_provider_impl.h View 1 2 2 chunks +9 lines, -0 lines 0 comments Download
M device/generic_sensor/sensor_provider_impl.cc View 1 2 3 4 5 6 7 8 9 10 4 chunks +37 lines, -7 lines 0 comments Download

Messages

Total messages: 91 (61 generated)
maksims (do not use this acc)
Please take a look. Do you I need to add anybody else to review the ...
4 years, 2 months ago (2016-09-26 09:33:17 UTC) #10
Mikhail
https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc#newcode33 device/generic_sensor/platform_sensor_provider_base.cc:33: return; it has to run callback with nullptr, right? ...
4 years, 2 months ago (2016-09-26 09:52:24 UTC) #14
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc#newcode33 device/generic_sensor/platform_sensor_provider_base.cc:33: return; On 2016/09/26 09:52:23, Mikhail wrote: > it has ...
4 years, 2 months ago (2016-09-27 10:17:25 UTC) #20
shalamov
https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc#newcode44 device/generic_sensor/platform_sensor_provider_base.cc:44: DCHECK(!ContainsKey(requests_map_, type)); This DCHECK would never fail, right? Maybe ...
4 years, 2 months ago (2016-09-27 11:27:01 UTC) #23
Mikhail
some nits https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc#newcode46 device/generic_sensor/platform_sensor_provider_base.cc:46: CallbackQueue pending_requests; nit: could be 'requests_map_[type] = ...
4 years, 2 months ago (2016-09-27 11:29:19 UTC) #24
Mikhail
On 2016/09/27 10:17:25, maksims wrote: > On 2016/09/26 09:52:23, Mikhail wrote: > > let's keep ...
4 years, 2 months ago (2016-09-27 11:31:59 UTC) #25
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/platform_sensor_provider_base.cc#newcode44 device/generic_sensor/platform_sensor_provider_base.cc:44: DCHECK(!ContainsKey(requests_map_, type)); On 2016/09/27 11:27:01, shalamov wrote: > > ...
4 years, 2 months ago (2016-09-27 12:19:37 UTC) #34
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/sensor_provider_impl.cc File device/generic_sensor/sensor_provider_impl.cc (right): https://codereview.chromium.org/2368193003/diff/20001/device/generic_sensor/sensor_provider_impl.cc#newcode35 device/generic_sensor/sensor_provider_impl.cc:35: : provider_(provider), weak_ptr_factory_(this) { On 2016/09/27 11:29:19, Mikhail wrote: ...
4 years, 2 months ago (2016-09-27 12:22:08 UTC) #35
Mikhail
lgtm
4 years, 2 months ago (2016-09-27 12:46:22 UTC) #36
maksims (do not use this acc)
timvolodine@, can we ask you for your comments?
4 years, 2 months ago (2016-09-27 14:03:52 UTC) #39
maksims (do not use this acc)
FYI: Alexis@ and Riju@
4 years, 2 months ago (2016-09-27 14:14:30 UTC) #40
timvolodine
generally more 'flexible' of course, however regarding implementation on Linux/ChromeOS if there is a dedicated ...
4 years, 2 months ago (2016-09-27 19:39:29 UTC) #43
maksims (do not use this acc)
On 2016/09/27 19:39:29, timvolodine wrote: > generally more 'flexible' of course, however regarding implementation on ...
4 years, 2 months ago (2016-09-27 20:21:15 UTC) #46
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc#newcode46 device/generic_sensor/platform_sensor_provider_base.cc:46: it->second.push_back(callback); On 2016/09/27 19:39:29, timvolodine wrote: > should we ...
4 years, 2 months ago (2016-09-28 07:45:37 UTC) #49
timvolodine
https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc#newcode46 device/generic_sensor/platform_sensor_provider_base.cc:46: it->second.push_back(callback); On 2016/09/28 07:45:37, maksims wrote: > On 2016/09/27 ...
4 years, 2 months ago (2016-09-29 13:17:27 UTC) #52
timvolodine
On 2016/09/27 20:21:15, maksims wrote: > On 2016/09/27 19:39:29, timvolodine wrote: > > generally more ...
4 years, 2 months ago (2016-09-29 13:20:32 UTC) #53
maksims (do not use this acc)
On 2016/09/29 13:20:32, timvolodine wrote: > On 2016/09/27 20:21:15, maksims wrote: > > On 2016/09/27 ...
4 years, 2 months ago (2016-09-30 06:22:33 UTC) #54
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc#newcode46 device/generic_sensor/platform_sensor_provider_base.cc:46: it->second.push_back(callback); On 2016/09/29 13:17:26, timvolodine wrote: > On 2016/09/28 ...
4 years, 2 months ago (2016-09-30 06:23:06 UTC) #55
timvolodine
On 2016/09/30 06:22:33, maksims wrote: > On 2016/09/29 13:20:32, timvolodine wrote: > > On 2016/09/27 ...
4 years, 2 months ago (2016-09-30 18:49:51 UTC) #56
timvolodine
https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc File device/generic_sensor/platform_sensor_provider_base.cc (right): https://codereview.chromium.org/2368193003/diff/100001/device/generic_sensor/platform_sensor_provider_base.cc#newcode46 device/generic_sensor/platform_sensor_provider_base.cc:46: it->second.push_back(callback); On 2016/09/30 06:23:06, maksims wrote: > On 2016/09/29 ...
4 years, 2 months ago (2016-09-30 18:50:49 UTC) #57
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/sensor_provider_impl.cc File device/generic_sensor/sensor_provider_impl.cc (right): https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/sensor_provider_impl.cc#newcode57 device/generic_sensor/sensor_provider_impl.cc:57: GetBufferOffset(type), cb); On 2016/09/30 18:50:48, timvolodine wrote: > you ...
4 years, 2 months ago (2016-10-03 12:58:11 UTC) #58
timvolodine
https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/sensor_provider_impl.cc File device/generic_sensor/sensor_provider_impl.cc (right): https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/sensor_provider_impl.cc#newcode57 device/generic_sensor/sensor_provider_impl.cc:57: GetBufferOffset(type), cb); On 2016/10/03 12:58:11, maksims wrote: > On ...
4 years, 2 months ago (2016-10-03 17:44:12 UTC) #59
maksims (do not use this acc)
https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/platform_sensor_provider_base.h File device/generic_sensor/platform_sensor_provider_base.h (right): https://codereview.chromium.org/2368193003/diff/120001/device/generic_sensor/platform_sensor_provider_base.h#newcode54 device/generic_sensor/platform_sensor_provider_base.h:54: std::vector<base::Callback<void(scoped_refptr<PlatformSensor>)>>; On 2016/09/30 18:50:48, timvolodine wrote: > std::vector<CreateSensorCallback> ? ...
4 years, 2 months ago (2016-10-04 07:21:34 UTC) #66
timvolodine
ok thanks! some comments below, otherwise lgtm https://codereview.chromium.org/2368193003/diff/140001/device/generic_sensor/sensor_provider_impl.cc File device/generic_sensor/sensor_provider_impl.cc (right): https://codereview.chromium.org/2368193003/diff/140001/device/generic_sensor/sensor_provider_impl.cc#newcode52 device/generic_sensor/sensor_provider_impl.cc:52: callback.Run(nullptr, nullptr); ...
4 years, 2 months ago (2016-10-04 18:39:16 UTC) #69
maksims (do not use this acc)
On 2016/10/04 18:39:16, timvolodine wrote: > ok thanks! some comments below, otherwise lgtm > > ...
4 years, 2 months ago (2016-10-05 07:12:57 UTC) #72
Mikhail
https://codereview.chromium.org/2368193003/diff/200001/device/generic_sensor/sensor_provider_impl.cc File device/generic_sensor/sensor_provider_impl.cc (right): https://codereview.chromium.org/2368193003/diff/200001/device/generic_sensor/sensor_provider_impl.cc#newcode33 device/generic_sensor/sensor_provider_impl.cc:33: base::MessageLoop::current()->task_runner()->PostTask( pls change it to 'base::ThreadTaskRunnerHandle::Get()'
4 years, 2 months ago (2016-10-05 08:31:29 UTC) #81
maksims (do not use this acc)
On 2016/10/05 08:31:29, Mikhail wrote: > https://codereview.chromium.org/2368193003/diff/200001/device/generic_sensor/sensor_provider_impl.cc > File device/generic_sensor/sensor_provider_impl.cc (right): > > https://codereview.chromium.org/2368193003/diff/200001/device/generic_sensor/sensor_provider_impl.cc#newcode33 > ...
4 years, 2 months ago (2016-10-05 09:46:10 UTC) #84
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2368193003/240001
4 years, 2 months ago (2016-10-05 09:46:35 UTC) #87
commit-bot: I haz the power
Committed patchset #11 (id:240001)
4 years, 2 months ago (2016-10-05 11:13:54 UTC) #89
commit-bot: I haz the power
4 years, 2 months ago (2016-10-05 11:15:44 UTC) #91
Message was sent while issue was closed.
Patchset 11 (id:??) landed as
https://crrev.com/85cc22d79580bc5ad58db03ff3e4fb8f9db539a6
Cr-Commit-Position: refs/heads/master@{#423127}

Powered by Google App Engine
This is Rietveld 408576698