Skip to content

Commit

Permalink
Moved work with devices to separate Java class
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexeyBarabash committed Jun 14, 2020
1 parent 2c01c59 commit a04d159
Show file tree
Hide file tree
Showing 10 changed files with 413 additions and 122 deletions.
1 change: 1 addition & 0 deletions android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/site_settings/BraveSiteSettingsPreferencesBase.java",
"../../brave/android/java/org/chromium/chrome/browser/site_settings/DesktopModePreferences.java",
"../../brave/android/java/org/chromium/chrome/browser/site_settings/PlayYTVideoInBrowserPreferences.java",
"../../brave/android/java/org/chromium/chrome/browser/sync/BraveSyncDevices.java",
"../../brave/android/java/org/chromium/chrome/browser/sync/BraveSyncService.java",
"../../brave/android/java/org/chromium/chrome/browser/sync/BraveSyncServiceObserver.java",
"../../brave/android/java/org/chromium/chrome/browser/toolbar/BraveHomeButton.java",
Expand Down
46 changes: 0 additions & 46 deletions android/java/org/chromium/chrome/browser/BraveSyncWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -208,50 +208,6 @@ public void HandleReset() {
nativeHandleReset(mNativeBraveSyncWorker);
}

@CalledByNative
public void OnDeviceInfoChangeJava() {
Log.e(TAG, "[BraveSync] HandleReset 000");
if (mSyncScreensObserver != null) {
mSyncScreensObserver.onDevicesAvailable();
}
}

public class SyncDeviceInfo {
public String mName;
public boolean mIsCurrentDevice;
public String mType;
public Date mLastUpdatedTimestamp;
}

public ArrayList<SyncDeviceInfo> GetSyncDeviceList() {
Log.e(TAG, "[BraveSync] GetSyncDeviceList 000");
ArrayList<SyncDeviceInfo> deviceList = new ArrayList<SyncDeviceInfo>();
String json = nativeGetSyncDeviceListJson(mNativeBraveSyncWorker);
json = "{\"devices\":"+json+"}";
Log.e(TAG, "[BraveSync] GetSyncDeviceList json="+json);
try {
JSONObject result = new JSONObject(json);
JSONArray devices = result.getJSONArray("devices");
Log.e(TAG, "[BraveSync] GetSyncDeviceList devices.length()="+devices.length());
for (int i = 0; i < devices.length(); i++) {
SyncDeviceInfo deviceInfo = new SyncDeviceInfo();
JSONObject device = devices.getJSONObject(i);
deviceInfo.mName = device.getString("name");
deviceInfo.mIsCurrentDevice = device.getBoolean("isCurrentDevice");
deviceInfo.mType = device.getString("type");
long lastUpdatedTimestamp = device.getLong("lastUpdatedTimestamp");
deviceInfo.mLastUpdatedTimestamp = new Date(lastUpdatedTimestamp);
deviceList.add(deviceInfo);
}
} catch (JSONException e) {
Log.e(TAG, "GetDeviceNameByObjectId JSONException error " + e);
} catch (IllegalStateException e) {
Log.e(TAG, "GetDeviceNameByObjectId IllegalStateException error " + e);
}
Log.e(TAG, "[BraveSync] GetSyncDeviceList deviceList.size()="+deviceList.size());
return deviceList;
}

private native void nativeInit();
private native void nativeDestroy(long nativeBraveSyncWorker);

Expand All @@ -269,6 +225,4 @@ public ArrayList<SyncDeviceInfo> GetSyncDeviceList() {
private native boolean nativeIsFirstSetupComplete(long nativeBraveSyncWorker);

private native void nativeHandleReset(long nativeBraveSyncWorker);

private native String nativeGetSyncDeviceListJson(long nativeBraveSyncWorker);
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
import org.chromium.chrome.browser.sync.BraveSyncService;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.chrome.browser.sync.BraveSyncDevices;

import java.io.IOException;
import java.lang.Runnable;
Expand All @@ -104,7 +105,8 @@
public class BraveSyncScreensPreference extends BravePreferenceFragment
implements View.OnClickListener, SettingsActivity.OnBackPressedListener,
CompoundButton.OnCheckedChangeListener, BarcodeTracker.BarcodeGraphicTrackerCallback,
BraveSyncService.GetSettingsAndDevicesCallback {
BraveSyncService.GetSettingsAndDevicesCallback,
BraveSyncDevices.DeviceInfoChangedListener {

private static final String TAG = "SYNC";
// Permission request codes need to be < 256
Expand Down Expand Up @@ -178,6 +180,19 @@ public class BraveSyncScreensPreference extends BravePreferenceFragment
private FrameLayout mLayoutMobile;
private FrameLayout mLayoutLaptop;

@Override
public void deviceInfoChanged() {
Log.e(TAG, "[BraveSync] BraveSyncScreensPreference.deviceInfoChanged 000");
if (mSyncScreensObserver != null) {
Log.e(TAG, "[BraveSync] BraveSyncScreensPreference.deviceInfoChanged will call mSyncScreensObserver.onDevicesAvailable()");
mSyncScreensObserver.onDevicesAvailable();
} else {
Log.e(TAG, "[BraveSync] BraveSyncScreensPreference.deviceInfoChanged mSyncScreensObserver is null");
}
}
boolean deviceInfoObserverSet = false;


@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Expand Down Expand Up @@ -441,14 +456,12 @@ public void run() {
Log.w(TAG, "No need to load devices for other pages");
return;
}
BraveActivity mainActivity = BraveRewardsHelper.getBraveActivity();
// if (null != mainActivity && null != mainActivity.mBraveSyncWorker) {
ArrayList<BraveSyncWorker.SyncDeviceInfo> deviceInfos = mainActivity.mBraveSyncWorker.GetSyncDeviceList();
ArrayList<BraveSyncDevices.SyncDeviceInfo> deviceInfos = BraveSyncDevices.get().GetSyncDeviceList();
Log.e(TAG, "[BraveSync] onDevicesAvailable deviceInfos.size()="+deviceInfos.size());
ViewGroup insertPoint = (ViewGroup) getView().findViewById(R.id.brave_sync_devices);
insertPoint.removeAllViews();
int index = 0;
for (BraveSyncWorker.SyncDeviceInfo device : deviceInfos) {
for (BraveSyncDevices.SyncDeviceInfo device : deviceInfos) {
View separator = (View) mInflater.inflate(R.layout.menu_separator, null);
View listItemView = (View) mInflater.inflate(R.layout.brave_sync_device, null);
if (null != listItemView && null != separator && null != insertPoint) {
Expand Down Expand Up @@ -1242,6 +1255,11 @@ public void onDestroy() {
if (mCameraSourcePreview != null) {
mCameraSourcePreview.release();
}
Log.e(TAG, "[BraveSync] BraveSyncScreensPreference.onDestroy deviceInfoObserverSet="+deviceInfoObserverSet);
if (deviceInfoObserverSet) {
BraveSyncDevices.get().removeDeviceInfoChangedListener(this);
deviceInfoObserverSet = false;
}
}

private boolean isBarCodeValid(String barcode, boolean hexValue) {
Expand Down Expand Up @@ -1719,6 +1737,12 @@ private void setSyncDoneLayout() {
mainActivity.mBraveSyncWorker.SaveCodephrase(GetCodephrase());
mainActivity.mBraveSyncWorker.OnDidClosePage();

Log.e(TAG, "[BraveSync] BraveSyncScreensPreference.setSyncDoneLayout deviceInfoObserverSet="+deviceInfoObserverSet);
if (!deviceInfoObserverSet) {
BraveSyncDevices.get().addDeviceInfoChangedListener(this);
deviceInfoObserverSet = true;
}

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().setTitle(R.string.sync_category_title);
if (null != mCameraSourcePreview) {
Expand Down
158 changes: 158 additions & 0 deletions android/java/org/chromium/chrome/browser/sync/BraveSyncDevices.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.chromium.chrome.browser.sync;


import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.Log;
import org.chromium.base.ThreadUtils;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

@JNINamespace("chrome::android")
public class BraveSyncDevices {
public static final String TAG = "SYNC";
private long mNativeBraveSyncDevicesAndroid = 0;

private static BraveSyncDevices sBraveSyncDevices;
private static boolean sInitialized;

public static BraveSyncDevices get() {
ThreadUtils.assertOnUiThread();
if (!sInitialized) {
sBraveSyncDevices = new BraveSyncDevices();
sInitialized = true;
}
return sBraveSyncDevices;
}

public BraveSyncDevices() {
Init();
}

@CalledByNative
private void setNativePtr(long nativePtr) {
Log.e(TAG, "[BraveSync] BraveSyncDevices.Init nativePtr=" + nativePtr);
assert mNativeBraveSyncDevicesAndroid == 0;
mNativeBraveSyncDevicesAndroid = nativePtr;
}

private void Init() {
Log.e(TAG, "[BraveSync] BraveSyncDevices.Init mNativeBraveSyncDevicesAndroid=" + mNativeBraveSyncDevicesAndroid);
if (mNativeBraveSyncDevicesAndroid == 0) {
nativeInit();
}
}

@Override
protected void finalize() {
Destroy();
}

private void Destroy() {
if (mNativeBraveSyncDevicesAndroid != 0) {
nativeDestroy(mNativeBraveSyncDevicesAndroid);
mNativeBraveSyncDevicesAndroid = 0;
}
}

/**
* Listener for the devices syncchain changes.
*/
public interface DeviceInfoChangedListener {
// Invoked when the device info has changed.
public void deviceInfoChanged();
}

// Sync state changes more often than listeners are added/removed, so using CopyOnWrite.
private final List<DeviceInfoChangedListener> mDeviceInfoListeners =
new CopyOnWriteArrayList<DeviceInfoChangedListener>();

public void addDeviceInfoChangedListener(DeviceInfoChangedListener listener) {
Log.e(TAG, "[BraveSync] addDeviceInfoChangedListener 000");
ThreadUtils.assertOnUiThread();
mDeviceInfoListeners.add(listener);
}

public void removeDeviceInfoChangedListener(DeviceInfoChangedListener listener) {
Log.e(TAG, "[BraveSync] removeDeviceInfoChangedListener 000");
ThreadUtils.assertOnUiThread();
mDeviceInfoListeners.remove(listener);
}

/**
* Called when the state of the native sync engine has changed, so various
* UI elements can update themselves.
*/
@CalledByNative
protected void deviceInfoChanged() {
Log.e(TAG, "[BraveSync] deviceInfoChanged 000 - invoking listeners");
for (DeviceInfoChangedListener listener : mDeviceInfoListeners) {
listener.deviceInfoChanged();
}
}

public class SyncDeviceInfo {
public String mName;
public boolean mIsCurrentDevice;
public String mType;
public Date mLastUpdatedTimestamp;
}

public ArrayList<SyncDeviceInfo> GetSyncDeviceList() {
Log.e(TAG, "[BraveSync] GetSyncDeviceList 000");
ArrayList<SyncDeviceInfo> deviceList = new ArrayList<SyncDeviceInfo>();
String json = nativeGetSyncDeviceListJson(mNativeBraveSyncDevicesAndroid);
// Add root element to make it real JSON, otherwise getJSONArray cannot parse it
json = "{\"devices\":" + json + "}";
Log.e(TAG, "[BraveSync] GetSyncDeviceList json="+json);
try {
JSONObject result = new JSONObject(json);
JSONArray devices = result.getJSONArray("devices");
Log.e(TAG, "[BraveSync] GetSyncDeviceList devices.length()="+devices.length());
for (int i = 0; i < devices.length(); i++) {
SyncDeviceInfo deviceInfo = new SyncDeviceInfo();
JSONObject device = devices.getJSONObject(i);
deviceInfo.mName = device.getString("name");
deviceInfo.mIsCurrentDevice = device.getBoolean("isCurrentDevice");
deviceInfo.mType = device.getString("type");
long lastUpdatedTimestamp = device.getLong("lastUpdatedTimestamp");
deviceInfo.mLastUpdatedTimestamp = new Date(lastUpdatedTimestamp);
deviceList.add(deviceInfo);
}
} catch (JSONException e) {
Log.e(TAG, "GetDeviceNameByObjectId JSONException error " + e);
} catch (IllegalStateException e) {
Log.e(TAG, "GetDeviceNameByObjectId IllegalStateException error " + e);
}
Log.e(TAG, "[BraveSync] GetSyncDeviceList deviceList.size()="+deviceList.size());
return deviceList;
}

private native void nativeInit();
private native void nativeDestroy(long nativeBraveSyncDevicesAndroid);

private native String nativeGetSyncDeviceListJson(long nativeBraveSyncDevicesAndroid);


/*
// syncer::SyncServiceObserver implementation.
void OnStateChanged(syncer::SyncService* sync) override;
// syncer::DeviceInfoTracker::Observer
void OnDeviceInfoChange() override;
*/

}
7 changes: 7 additions & 0 deletions browser/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,13 @@ source_set("browser_process") {
]
}

if (enable_brave_sync) {
sources += [
"sync/brave_sync_devices_android.cc",
"sync/brave_sync_devices_android.h",
]
}

deps += [
"//brave/browser/android/preferences",
"//brave/build/android:jni_headers",
Expand Down
Loading

0 comments on commit a04d159

Please sign in to comment.