Commit 3760b8c8 authored by Jan Krcal's avatar Jan Krcal Committed by Commit Bot

[protobuf] Convert partner_location_descriptor from nano to lite

Bug: 782237
Change-Id: Ieb698518c15a84a5759d1c3cf99cff8a40f8f663
Reviewed-on: https://chromium-review.googlesource.com/854053Reviewed-by: default avatarMaria Khomenko <mariakhomenko@chromium.org>
Commit-Queue: Jan Krcal <jkrcal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543319}
parent fe785bc5
......@@ -408,6 +408,7 @@ proto_java_library("partner_location_descriptor_proto_java") {
sources = [
"$proto_path/partner_location_descriptor.proto",
]
generate_lite = true
}
proto_java_library("thumbnail_cache_entry_proto_java") {
......
......@@ -16,8 +16,6 @@ import android.provider.Settings;
import android.support.annotation.IntDef;
import android.util.Base64;
import com.google.protobuf.nano.MessageNano;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.CollectionUtil;
import org.chromium.base.ContextUtils;
......@@ -712,19 +710,21 @@ public class GeolocationHeader {
int radius = (int) (location.getAccuracy() * 1000);
// Create a LatLng for the coordinates.
PartnerLocationDescriptor.LatLng latlng = new PartnerLocationDescriptor.LatLng();
latlng.latitudeE7 = latitudeE7;
latlng.longitudeE7 = longitudeE7;
PartnerLocationDescriptor.LatLng latlng = PartnerLocationDescriptor.LatLng.newBuilder()
.setLatitudeE7(latitudeE7)
.setLongitudeE7(longitudeE7)
.build();
// Populate a LocationDescriptor with the LatLng.
PartnerLocationDescriptor.LocationDescriptor locationDescriptor =
new PartnerLocationDescriptor.LocationDescriptor();
locationDescriptor.latlng = latlng;
// Include role, producer, timestamp and radius.
locationDescriptor.role = PartnerLocationDescriptor.CURRENT_LOCATION;
locationDescriptor.producer = PartnerLocationDescriptor.DEVICE_LOCATION;
locationDescriptor.timestamp = timestamp;
locationDescriptor.radius = (float) radius;
PartnerLocationDescriptor.LocationDescriptor.newBuilder()
.setLatlng(latlng)
// Include role, producer, timestamp and radius.
.setRole(PartnerLocationDescriptor.LocationRole.CURRENT_LOCATION)
.setProducer(PartnerLocationDescriptor.LocationProducer.DEVICE_LOCATION)
.setTimestamp(timestamp)
.setRadius((float) radius)
.build();
return encodeLocationDescriptor(locationDescriptor);
}
......@@ -734,7 +734,7 @@ public class GeolocationHeader {
private static String encodeLocationDescriptor(
PartnerLocationDescriptor.LocationDescriptor locationDescriptor) {
return Base64.encodeToString(
MessageNano.toByteArray(locationDescriptor), Base64.NO_WRAP | Base64.URL_SAFE);
locationDescriptor.toByteArray(), Base64.NO_WRAP | Base64.URL_SAFE);
}
/**
......@@ -753,41 +753,35 @@ public class GeolocationHeader {
Set<VisibleWifi> visibleWifis = visibleNetworksToEncode.allVisibleWifis();
Set<VisibleCell> visibleCells = visibleNetworksToEncode.allVisibleCells();
int numVisibleNetworks = (connectedWifi != null ? 1 : 0)
+ (visibleWifis != null ? visibleWifis.size() : 0) + (connectedCell != null ? 1 : 0)
+ (visibleCells != null ? visibleCells.size() : 0);
if (numVisibleNetworks == 0) {
if (connectedWifi == null && visibleWifis == null && visibleWifis.isEmpty()
&& connectedCell == null && visibleCells == null && visibleCells.isEmpty()) {
// No data to encode.
return null;
}
int i = 0;
PartnerLocationDescriptor.VisibleNetwork[] protoNetworks =
new PartnerLocationDescriptor.VisibleNetwork[numVisibleNetworks];
PartnerLocationDescriptor.LocationDescriptor.Builder locationDescriptorBuilder =
PartnerLocationDescriptor.LocationDescriptor.newBuilder()
.setRole(PartnerLocationDescriptor.LocationRole.CURRENT_LOCATION)
.setProducer(PartnerLocationDescriptor.LocationProducer.DEVICE_LOCATION);
if (connectedWifi != null) {
protoNetworks[i++] = connectedWifi.toProto(true);
locationDescriptorBuilder.addVisibleNetwork(connectedWifi.toProto(true));
}
if (visibleWifis != null) {
for (VisibleWifi visibleWifi : visibleWifis) {
protoNetworks[i++] = visibleWifi.toProto(false);
locationDescriptorBuilder.addVisibleNetwork(visibleWifi.toProto(false));
}
}
if (connectedCell != null) {
protoNetworks[i++] = connectedCell.toProto(true);
locationDescriptorBuilder.addVisibleNetwork(connectedCell.toProto(true));
}
if (visibleCells != null) {
for (VisibleCell visibleCell : visibleCells) {
protoNetworks[i++] = visibleCell.toProto(false);
locationDescriptorBuilder.addVisibleNetwork(visibleCell.toProto(false));
}
}
PartnerLocationDescriptor.LocationDescriptor locationDescriptor =
new PartnerLocationDescriptor.LocationDescriptor();
locationDescriptor.role = PartnerLocationDescriptor.CURRENT_LOCATION;
locationDescriptor.producer = PartnerLocationDescriptor.DEVICE_LOCATION;
locationDescriptor.visibleNetwork = protoNetworks;
return encodeLocationDescriptor(locationDescriptor);
return encodeLocationDescriptor(locationDescriptorBuilder.build());
}
@Nullable
......
......@@ -207,20 +207,20 @@ class VisibleNetworks {
* proto.
*/
PartnerLocationDescriptor.VisibleNetwork toProto(boolean connected) {
PartnerLocationDescriptor.VisibleNetwork visibleNetwork =
new PartnerLocationDescriptor.VisibleNetwork();
PartnerLocationDescriptor.VisibleNetwork.Builder visibleNetworkBuilder =
PartnerLocationDescriptor.VisibleNetwork.newBuilder();
PartnerLocationDescriptor.VisibleNetwork.WiFi wifi =
new PartnerLocationDescriptor.VisibleNetwork.WiFi();
PartnerLocationDescriptor.VisibleNetwork.WiFi.Builder wifiBuilder =
PartnerLocationDescriptor.VisibleNetwork.WiFi.newBuilder();
wifi.bssid = bssid();
wifi.levelDbm = level();
if (bssid() != null) wifiBuilder.setBssid(bssid());
if (level() != null) wifiBuilder.setLevelDbm(level());
visibleNetwork.wifi = wifi;
visibleNetwork.timestampMs = timestampMs();
visibleNetwork.connected = connected;
visibleNetworkBuilder.setWifi(wifiBuilder.build());
if (timestampMs() != null) visibleNetworkBuilder.setTimestampMs(timestampMs());
visibleNetworkBuilder.setConnected(connected);
return visibleNetwork;
return visibleNetworkBuilder.build();
}
}
......@@ -394,44 +394,45 @@ class VisibleNetworks {
* proto.
*/
PartnerLocationDescriptor.VisibleNetwork toProto(boolean connected) {
PartnerLocationDescriptor.VisibleNetwork visibleNetwork =
new PartnerLocationDescriptor.VisibleNetwork();
PartnerLocationDescriptor.VisibleNetwork.Builder visibleNetworkBuilder =
PartnerLocationDescriptor.VisibleNetwork.newBuilder();
PartnerLocationDescriptor.VisibleNetwork.Cell cell =
new PartnerLocationDescriptor.VisibleNetwork.Cell();
PartnerLocationDescriptor.VisibleNetwork.Cell.Builder cellBuilder =
PartnerLocationDescriptor.VisibleNetwork.Cell.newBuilder();
switch (radioType()) {
case VisibleCell.CDMA_RADIO_TYPE:
cell.type = PartnerLocationDescriptor.VisibleNetwork.Cell.CDMA;
cellBuilder.setType(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.CDMA);
break;
case VisibleCell.GSM_RADIO_TYPE:
cell.type = PartnerLocationDescriptor.VisibleNetwork.Cell.GSM;
cellBuilder.setType(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.GSM);
break;
case VisibleCell.LTE_RADIO_TYPE:
cell.type = PartnerLocationDescriptor.VisibleNetwork.Cell.LTE;
cellBuilder.setType(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.LTE);
break;
case VisibleCell.WCDMA_RADIO_TYPE:
cell.type = PartnerLocationDescriptor.VisibleNetwork.Cell.WCDMA;
cellBuilder.setType(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.WCDMA);
break;
case VisibleCell.UNKNOWN_RADIO_TYPE:
case VisibleCell.UNKNOWN_MISSING_LOCATION_PERMISSION_RADIO_TYPE:
default:
cell.type = PartnerLocationDescriptor.VisibleNetwork.Cell.UNKNOWN;
cellBuilder.setType(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.UNKNOWN);
break;
}
cell.cellId = cellId();
cell.locationAreaCode = locationAreaCode();
cell.mobileCountryCode = mobileCountryCode();
cell.mobileNetworkCode = mobileNetworkCode();
cell.primaryScramblingCode = primaryScramblingCode();
cell.physicalCellId = physicalCellId();
cell.trackingAreaCode = trackingAreaCode();
visibleNetwork.cell = cell;
visibleNetwork.timestampMs = timestampMs();
visibleNetwork.connected = connected;
return visibleNetwork;
if (cellId() != null) cellBuilder.setCellId(cellId());
if (locationAreaCode() != null) cellBuilder.setLocationAreaCode(locationAreaCode());
if (mobileCountryCode() != null) cellBuilder.setMobileCountryCode(mobileCountryCode());
if (mobileNetworkCode() != null) cellBuilder.setMobileNetworkCode(mobileNetworkCode());
if (primaryScramblingCode() != null)
cellBuilder.setPrimaryScramblingCode(primaryScramblingCode());
if (physicalCellId() != null) cellBuilder.setPhysicalCellId(physicalCellId());
if (trackingAreaCode() != null) cellBuilder.setTrackingAreaCode(trackingAreaCode());
visibleNetworkBuilder.setCell(cellBuilder.build());
if (timestampMs() != null) visibleNetworkBuilder.setTimestampMs(timestampMs());
visibleNetworkBuilder.setConnected(connected);
return visibleNetworkBuilder.build();
}
/**
......@@ -507,4 +508,4 @@ class VisibleNetworks {
}
}
}
}
\ No newline at end of file
}
......@@ -20,6 +20,9 @@ package org.chromium.chrome.browser.omnibox.geo;
option java_outer_classname = "PartnerLocationDescriptor";
option java_package = "org.chromium.chrome.browser.omnibox.geo";
// TODO(jkrcal): Remove when protobuf 4.0 is out, https://crbug.com/800281.
option optimize_for = LITE_RUNTIME;
enum LocationRole {
UNKNOWN_ROLE = 0;
CURRENT_LOCATION = 1;
......
......@@ -11,8 +11,6 @@ import android.os.SystemClock;
import android.support.test.filters.SmallTest;
import android.util.Base64;
import com.google.protobuf.nano.MessageNano;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
......@@ -247,22 +245,24 @@ public class GeolocationHeaderTest {
int radius = (int) (LOCATION_ACCURACY * 1000);
// Create a LatLng for the coordinates.
PartnerLocationDescriptor.LatLng latlng = new PartnerLocationDescriptor.LatLng();
latlng.latitudeE7 = latitudeE7;
latlng.longitudeE7 = longitudeE7;
PartnerLocationDescriptor.LatLng latlng = PartnerLocationDescriptor.LatLng.newBuilder()
.setLatitudeE7(latitudeE7)
.setLongitudeE7(longitudeE7)
.build();
// Populate a LocationDescriptor with the LatLng.
PartnerLocationDescriptor.LocationDescriptor locationDescriptor =
new PartnerLocationDescriptor.LocationDescriptor();
locationDescriptor.latlng = latlng;
// Include role, producer, timestamp and radius.
locationDescriptor.role = PartnerLocationDescriptor.CURRENT_LOCATION;
locationDescriptor.producer = PartnerLocationDescriptor.DEVICE_LOCATION;
locationDescriptor.timestamp = timestamp;
locationDescriptor.radius = (float) radius;
PartnerLocationDescriptor.LocationDescriptor.newBuilder()
.setLatlng(latlng)
// Include role, producer, timestamp and radius.
.setRole(PartnerLocationDescriptor.LocationRole.CURRENT_LOCATION)
.setProducer(PartnerLocationDescriptor.LocationProducer.DEVICE_LOCATION)
.setTimestamp(timestamp)
.setRadius((float) radius)
.build();
String locationProto = Base64.encodeToString(
MessageNano.toByteArray(locationDescriptor), Base64.NO_WRAP | Base64.URL_SAFE);
locationDescriptor.toByteArray(), Base64.NO_WRAP | Base64.URL_SAFE);
String expectedHeader = "X-Geo: w " + locationProto;
Assert.assertEquals(expectedHeader, header);
}
......
......@@ -7,13 +7,10 @@ package org.chromium.chrome.browser.omnibox.geo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import android.util.Base64;
import com.google.protobuf.nano.MessageNano;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
......@@ -141,12 +138,12 @@ public class VisibleNetworksTest {
public void testVisibleWifiToProto() {
boolean connected = true;
PartnerLocationDescriptor.VisibleNetwork visibleNetwork = VISIBLE_WIFI1.toProto(connected);
PartnerLocationDescriptor.VisibleNetwork.WiFi wifi = visibleNetwork.wifi;
PartnerLocationDescriptor.VisibleNetwork.WiFi wifi = visibleNetwork.getWifi();
assertEquals(VISIBLE_WIFI1.bssid(), wifi.bssid);
assertEquals(VISIBLE_WIFI1.level(), wifi.levelDbm);
assertEquals(VISIBLE_WIFI1.timestampMs(), visibleNetwork.timestampMs);
assertEquals(connected, visibleNetwork.connected);
assertEquals(VISIBLE_WIFI1.bssid(), wifi.getBssid());
assertEquals(VISIBLE_WIFI1.level().intValue(), wifi.getLevelDbm());
assertEquals(VISIBLE_WIFI1.timestampMs().longValue(), visibleNetwork.getTimestampMs());
assertEquals(connected, visibleNetwork.getConnected());
assertEquals(VISIBLE_WIFI1_PROTO_ENCODED, encodeVisibleNetwork(visibleNetwork));
}
......@@ -155,12 +152,12 @@ public class VisibleNetworksTest {
public void testVisibleWifiToProtoEmptyWifi() {
boolean connected = true;
PartnerLocationDescriptor.VisibleNetwork visibleNetwork = EMPTY_WIFI.toProto(connected);
PartnerLocationDescriptor.VisibleNetwork.WiFi wifi = visibleNetwork.wifi;
PartnerLocationDescriptor.VisibleNetwork.WiFi wifi = visibleNetwork.getWifi();
assertNull(wifi.bssid);
assertNull(wifi.levelDbm);
assertNull(visibleNetwork.timestampMs);
assertEquals(connected, visibleNetwork.connected);
assertFalse(wifi.hasBssid());
assertFalse(wifi.hasLevelDbm());
assertFalse(visibleNetwork.hasTimestampMs());
assertEquals(connected, visibleNetwork.getConnected());
assertEquals(EMPTY_WIFI_PROTO_ENCODED, encodeVisibleNetwork(visibleNetwork));
}
......@@ -224,18 +221,19 @@ public class VisibleNetworksTest {
public void testVisibleCellToProto() {
boolean connected = true;
PartnerLocationDescriptor.VisibleNetwork visibleNetwork = VISIBLE_CELL1.toProto(connected);
PartnerLocationDescriptor.VisibleNetwork.Cell cell = visibleNetwork.cell;
assertEquals(VISIBLE_CELL1.cellId(), cell.cellId);
assertEquals(VISIBLE_CELL1.locationAreaCode(), cell.locationAreaCode);
assertEquals(VISIBLE_CELL1.mobileCountryCode(), cell.mobileCountryCode);
assertEquals(VISIBLE_CELL1.mobileNetworkCode(), cell.mobileNetworkCode);
assertEquals(VISIBLE_CELL1.primaryScramblingCode(), cell.primaryScramblingCode);
assertEquals(VISIBLE_CELL1.physicalCellId(), cell.physicalCellId);
assertEquals(VISIBLE_CELL1.trackingAreaCode(), cell.trackingAreaCode);
assertEquals(VISIBLE_CELL1.timestampMs(), visibleNetwork.timestampMs);
assertEquals(connected, visibleNetwork.connected);
assertEquals(PartnerLocationDescriptor.VisibleNetwork.Cell.GSM, cell.type.intValue());
PartnerLocationDescriptor.VisibleNetwork.Cell cell = visibleNetwork.getCell();
assertEquals(VISIBLE_CELL1.cellId().intValue(), cell.getCellId());
assertEquals(VISIBLE_CELL1.locationAreaCode().intValue(), cell.getLocationAreaCode());
assertEquals(VISIBLE_CELL1.mobileCountryCode().intValue(), cell.getMobileCountryCode());
assertEquals(VISIBLE_CELL1.mobileNetworkCode().intValue(), cell.getMobileNetworkCode());
assertEquals(
VISIBLE_CELL1.primaryScramblingCode().intValue(), cell.getPrimaryScramblingCode());
assertEquals(VISIBLE_CELL1.physicalCellId().intValue(), cell.getPhysicalCellId());
assertEquals(VISIBLE_CELL1.trackingAreaCode().intValue(), cell.getTrackingAreaCode());
assertEquals(VISIBLE_CELL1.timestampMs().longValue(), visibleNetwork.getTimestampMs());
assertEquals(connected, visibleNetwork.getConnected());
assertEquals(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.GSM, cell.getType());
assertEquals(VISIBLE_CELL1_PROTO_ENCODED, encodeVisibleNetwork(visibleNetwork));
}
......@@ -244,18 +242,18 @@ public class VisibleNetworksTest {
public void testVisibleCellToProtoEmptyCell() {
boolean connected = true;
PartnerLocationDescriptor.VisibleNetwork visibleNetwork = EMPTY_CELL.toProto(connected);
PartnerLocationDescriptor.VisibleNetwork.Cell cell = visibleNetwork.cell;
assertEquals(VisibleCell.UNKNOWN_RADIO_TYPE, cell.type.intValue());
assertNull(cell.cellId);
assertNull(cell.locationAreaCode);
assertNull(cell.mobileCountryCode);
assertNull(cell.mobileNetworkCode);
assertNull(cell.primaryScramblingCode);
assertNull(cell.physicalCellId);
assertNull(cell.trackingAreaCode);
assertNull(visibleNetwork.timestampMs);
assertEquals(connected, visibleNetwork.connected);
PartnerLocationDescriptor.VisibleNetwork.Cell cell = visibleNetwork.getCell();
assertEquals(PartnerLocationDescriptor.VisibleNetwork.Cell.Type.UNKNOWN, cell.getType());
assertFalse(cell.hasCellId());
assertFalse(cell.hasLocationAreaCode());
assertFalse(cell.hasMobileCountryCode());
assertFalse(cell.hasMobileNetworkCode());
assertFalse(cell.hasPrimaryScramblingCode());
assertFalse(cell.hasPhysicalCellId());
assertFalse(cell.hasTrackingAreaCode());
assertFalse(visibleNetwork.hasTimestampMs());
assertEquals(connected, visibleNetwork.getConnected());
assertEquals(EMPTY_CELL_PROTO_ENCODED, encodeVisibleNetwork(visibleNetwork));
}
......@@ -304,13 +302,13 @@ public class VisibleNetworksTest {
private static String encodeVisibleNetwork(
PartnerLocationDescriptor.VisibleNetwork visibleNetwork) {
PartnerLocationDescriptor.LocationDescriptor locationDescriptor =
new PartnerLocationDescriptor.LocationDescriptor();
locationDescriptor.role = PartnerLocationDescriptor.CURRENT_LOCATION;
locationDescriptor.producer = PartnerLocationDescriptor.DEVICE_LOCATION;
locationDescriptor.visibleNetwork = new PartnerLocationDescriptor.VisibleNetwork[1];
locationDescriptor.visibleNetwork[0] = visibleNetwork;
PartnerLocationDescriptor.LocationDescriptor.newBuilder()
.setRole(PartnerLocationDescriptor.LocationRole.CURRENT_LOCATION)
.setProducer(PartnerLocationDescriptor.LocationProducer.DEVICE_LOCATION)
.addVisibleNetwork(visibleNetwork)
.build();
return Base64.encodeToString(
MessageNano.toByteArray(locationDescriptor), Base64.NO_WRAP | Base64.URL_SAFE);
locationDescriptor.toByteArray(), Base64.NO_WRAP | Base64.URL_SAFE);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment