Commit Graph
166 Commits
Author SHA1 Message Date
Anay Wadhera f26d25ed01 Provide a platform abstraction for RandBytes instead of swapping headers
The `RandBytes` functions were being placed in the `crypto` namespace,
which collides with Chromium's namespace of the same name. Within,
`RandBytes` was defined with almost-the-same API. Then in Chromium
builds, the Chromium header would be used instead (though somewhat
inconsistently).

This creates a lot of pain for Chromium development as there's a
third-party repository directly depending on headers from Chromium's
source tree, and is against the third-party policies for that reason.
There are a number of other headers that mirror Chromium and are
swapped out in the Chromium build that will cause similar pain, such as:
```
include "crypto/aead.h"
include "crypto/ec_private_key.h"
include "crypto/hkdf.h"
```

This CL provides a template for how to get rid of these header swaps and
give a platform abstraction in nearby instead.

We provide a platform abstraction in `platform/crypto.h` (really in
`platform/implementation/crypto.h`) which is implemented in
`platform/implementation/shared/crypto.cc`. However that implementation
is removed by `#ifdef` when in the Chromium build.

Then, in the Chromium repo, we will add (separately) an implementation
of the same abstraction in `//third_party/nearby/platform_impl` with GN
rules to include it in the build. It will replace the implementation
from the nearby repo.

Copybara import of the project:

--
6ca8099 by danakj <danakj@chromium.org>:

Provide a platform abstraction for RandBytes instead of swapping headers

The `RandBytes` functions were being placed in the `crypto` namespace,
which collides with Chromium's namespace of the same name. Within,
`RandBytes` was defined with almost-the-same API. Then in Chromium
builds, the Chromium header would be used instead (though somewhat
inconsistently).

This creates a lot of pain for Chromium development as there's a
third-party repository directly depending on headers from Chromium's
source tree, and is against the third-party policies for that reason.
There are a number of other headers that mirror Chromium and are
swapped out in the Chromium build that will cause similar pain, such as:
```
include "crypto/aead.h"
include "crypto/ec_private_key.h"
include "crypto/hkdf.h"
```

This CL provides a template for how to get rid of these header swaps and
give a platform abstraction in nearby instead.

We provide a platform abstraction in `platform/crypto.h` (really in
`platform/implementation/crypto.h`) which is implemented in
`platform/implementation/shared/crypto.cc`. However that implementation
is removed by `#ifdef` when in the Chromium build.

Then, in the Chromium repo, we will add (separately) an implementation
of the same abstraction in `//third_party/nearby/platform_impl` with GN
rules to include it in the build. It will replace the implementation
from the nearby repo.

--
9c2654b by danakj <danakj@chromium.org>:

Remove CryptoSpan, use absl::Span

The header swapping of Chromium crypto libraries is
problematic, but absl::Span will convert to base::span
so there's no need for the typedef even without
removing the header swapping yet.

--
df1135d by danakj <danakj@chromium.org>:

Add missing files

--
ab18a15 by danakj <danakj@chromium.org>:

Remove the random_unittest.cc from Swift build

The file moved, so the Swift package needs its path
updated.

--
2038f78 by danakj <danakj@chromium.org>:

Combine crypto unittests into crypto_test.cc

--
f7ad176 by danakj <danakj@chromium.org>:

Add stdint and stddef includes for uint8_t and size_t

--
9f04590 by danakj <danakj@chromium.org>:

Mark the shared crypto implementation compatable_with non_prod

--
18eeafd by danakj <danakj@chromium.org>:

Add IWYU pragma for crypto implementation

PiperOrigin-RevId: 632150866
2024-05-09 08:02:50 -07:00
hai007 bba1ca540f Remove provisioned identity type from proto
PiperOrigin-RevId: 629178167
2024-04-29 13:59:55 -07:00
hai007 6fc1559d23 Automated Code Change
PiperOrigin-RevId: 624435924
2024-04-13 02:06:34 -07:00
Francis Tsui 1e08b2d886 Fixed remaining filesystem calls that throws exceptions.
PiperOrigin-RevId: 620379472
2024-03-29 17:33:25 -07:00
Francis Tsui a082f36021 Switch glog to absl::log.
PiperOrigin-RevId: 615535748
2024-03-13 14:03:23 -07:00
Francis Tsui 1072030be8 Copy sharing/internal, sharing/common and sharing/scheduling to github.
- Move Abseil pin to same as that used in Chromium.
- Disabled layering_check due to build failure in absl.

PiperOrigin-RevId: 596631921
2024-01-08 10:20:37 -08:00
hai007 6ae46a9496 Add visibilities
PiperOrigin-RevId: 596118852
2024-01-05 17:26:39 -08:00
Janusz Sobczak 2c55c0cdbd Refactor Pipe implementation
* Remove Pipe classes
* Rename BasePipe to Pipe
* Hide Pipe class in anonymous namespace in pipe.cc
* Add CreatePipe static method
* Replace Payload(std::function<InputStream&()>) with Payload(std::unique_ptr<InputStream>)
* Find&Replace Pipe usages

PiperOrigin-RevId: 557276980
2023-08-15 15:53:58 -07:00
Guogang Li c8230a7ec3 Optimize application startup time
PiperOrigin-RevId: 557248394
2023-08-15 14:19:11 -07:00
Janusz Sobczak 5393daf9f1 Merge logging and types build targets
Both "types" and "logging" build targets included "logging.h"
Merging them together avoids circular dependencies.

PiperOrigin-RevId: 555262816
2023-08-09 19:13:12 -07:00
hai007 347d10b74f Automated visibility attribute cleanup.
PiperOrigin-RevId: 553138950
2023-08-02 07:30:35 -07:00
Richard Levasseur 0d58ead61c Internal change
PiperOrigin-RevId: 552574409
2023-07-31 13:22:20 -07:00
Janusz Sobczak 2e1ed2b465 Fix wifi test flakiness
PiperOrigin-RevId: 549683201
2023-07-20 11:06:44 -07:00
Crisrael Lucero 0e44ed626d Refactor crypto/ directory into crypto_cros/ and crypto/
PiperOrigin-RevId: 549467911
2023-07-19 17:12:52 -07:00
Anay Wadhera f95a875cde Weave port [7/n]: Introduce Weave client socket implementation
PiperOrigin-RevId: 547812816
2023-07-13 08:45:16 -07:00
Guogang Li b113f5550d Workaround for "backward reference detected" issue
PiperOrigin-RevId: 547646854
2023-07-12 17:34:04 -07:00
Guogang Li 4a71c4d2d0 Move NS implementation to third party folder
PiperOrigin-RevId: 546966492
2023-07-10 13:39:42 -07:00
Qin Wang 22c3a07677 Migrate DataManager to third_party/nearby/internal
PiperOrigin-RevId: 544395891
2023-06-29 10:31:07 -07:00
Anay Wadhera 5da4b33824 Revert "Revert incoming connections listener changes for internal breakages."
PiperOrigin-RevId: 542381558
2023-06-21 15:36:44 -07:00
Anay Wadhera 1973b09849 Revert incoming connections listener changes for internal breakages.
PiperOrigin-RevId: 542010849
2023-06-20 12:16:10 -07:00
Anay Wadhera 5737b867ed implement startlisteningforincomingconnections
PiperOrigin-RevId: 540707703
2023-06-15 15:31:08 -07:00
Juliet Levesque 240159e872 [Nearby Connections] Stop 3 AttemptsToConnect over WebRTC for CancellationFlag
CancellationFlags will be used to prevent crashes during the shutdown of Nearby Connections from pending tasks taking too long during the shutdown period. WebRTC using 3 x 10s retries to connect, which means we are potentially waiting for 30 seconds of retries to execute during shutdown (which is longer than the 10s duration alloted for Core shutdown).

By using CancellationFlags, we can prevent the retries occuring during the Shutdown by short-circuiting an in flight AttemptToConnect, and checking for Cancellation before retries.

PiperOrigin-RevId: 539690403
2023-06-12 10:16:36 -07:00
hai007 39e54e8a0c Automated visibility attribute cleanup.
PiperOrigin-RevId: 539527095
2023-06-11 20:09:41 -07:00
Qin Wang ba740c9a5c Implement RetroactivePairingDetector
PiperOrigin-RevId: 538319791
2023-06-06 16:18:38 -07:00
Chun Zhang 5e4222e930 Remove location/nearby/cpp/sharing/implementation/logging/logging.h from
third_party.

PiperOrigin-RevId: 536384493
2023-05-30 06:49:53 -07:00
hai007 4527c42480 Remove location/nearby/cpp/sharing/implementation/logging/logging.h from
third_party.

PiperOrigin-RevId: 535697014
2023-05-26 13:15:32 -07:00
Chun Zhang 45c679bc20 Remove location/nearby/cpp/sharing/implementation/logging/logging.h from
third_party.

PiperOrigin-RevId: 535684317
2023-05-26 12:21:32 -07:00
Chun Zhang c9884f6218 Migrate AccountManager from location/nearby to third_party/nearby
PiperOrigin-RevId: 533915507
2023-05-21 17:37:15 -07:00
Janusz Sobczak b5938c0d17 Add G3 gatt server
PiperOrigin-RevId: 531287485
2023-05-11 13:15:40 -07:00
Nick Bourdakos 58772e95f9 Internal change
PiperOrigin-RevId: 529464527
2023-05-04 11:24:39 -07:00
Anay Wadhera d91904d79d Create ConnectionsDevice
PiperOrigin-RevId: 529447365
2023-05-04 10:26:47 -07:00
Guogang Li d510a8ce3c Added cancellable request to network library
PiperOrigin-RevId: 529197083
2023-05-03 15:37:17 -07:00
Anay Wadhera 21d2efbccd Create PresenceDeviceProvider
PiperOrigin-RevId: 528913199
2023-05-02 16:02:36 -07:00
hai007 465aa7a489 Applied platform thread to network lib
PiperOrigin-RevId: 528521852
2023-05-01 11:13:36 -07:00
Anay Wadhera 5edd8e25ca Introduce v3 NC API callbacks
PiperOrigin-RevId: 527747390
2023-04-27 19:01:39 -07:00
Chun Zhang 2e7f7a7d90 Migrate PreferencesManager from location/nearby to third_party/nearby
PiperOrigin-RevId: 524900136
2023-04-17 11:23:01 -07:00
Anay Wadhera a1868432b9 Implement connection info DE format
PiperOrigin-RevId: 522678942
2023-04-07 14:02:40 -07:00
Janusz Sobczak 665b0b0e86 Add observer for pairing events.
Defines an observer for BT classic medium.
The observer is notified when a device is paired or unpaired.

PiperOrigin-RevId: 521917539
2023-04-04 18:13:07 -07:00
Hai Shang c312442f3d internal clean up
PiperOrigin-RevId: 521555239
2023-04-03 14:00:22 -07:00
Qin Wang c1835fcfa1 Implement FastPairGattServiceClient for fast pair windows
PiperOrigin-RevId: 521005152
2023-03-31 13:52:34 -07:00
Guogang Li be99b60feb Applied platform thread to network lib
PiperOrigin-RevId: 520998502
2023-03-31 13:23:32 -07:00
Hai Shang 47b7a04939 minor clean up
PiperOrigin-RevId: 520734787
2023-03-30 13:56:57 -07:00
Guogang Li 8a66bff097 Made observer list thread safe
PiperOrigin-RevId: 520713657
2023-03-30 12:36:11 -07:00
Nick Bourdakos 14e7832be0 Internal change
PiperOrigin-RevId: 520638739
2023-03-30 12:34:53 -07:00
Janusz Sobczak c249c3079f Support fake clock in test environment
A synthetic clock helps testing (long) timeouts by allowing us to move the time
forward by an arbitrary amount.

PiperOrigin-RevId: 520407442
2023-03-29 12:19:28 -07:00
Nick Bourdakos a933a91413 Internal Change
PiperOrigin-RevId: 520165614
2023-03-28 16:26:40 -07:00
Anay Wadhera 3f1b0c81e3 Weave port [2/n]: Introduce Weave packetizer implementation
PiperOrigin-RevId: 518881931
2023-03-23 09:30:55 -07:00
Janusz Sobczak 1a78b33a89 Add InputStream::ReadExactly
Read() can return fewer bytes than requested.
ReadExactly() will call Read() repeatedly until we
have read as many bytes as we need.

PiperOrigin-RevId: 518719418
2023-03-22 17:45:50 -07:00
Nick Bourdakos 0b3c759aa3 Remove unneeded WebRTC flags
PiperOrigin-RevId: 518629654
2023-03-22 11:44:12 -07:00
hai007 8b1791caab Automated visibility attribute cleanup.
PiperOrigin-RevId: 518628538
2023-03-22 11:39:32 -07:00