| Index: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ui/RemoteInstanceListFragment.java
|
| diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ui/RemoteInstanceListFragment.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ui/RemoteInstanceListFragment.java
|
| deleted file mode 100644
|
| index 8441da0e504f24335057a525c0a5522a19d6ff6f..0000000000000000000000000000000000000000
|
| --- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ui/RemoteInstanceListFragment.java
|
| +++ /dev/null
|
| @@ -1,350 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.components.devtools_bridge.ui;
|
| -
|
| -import android.accounts.Account;
|
| -import android.accounts.AccountManager;
|
| -import android.accounts.AccountManagerCallback;
|
| -import android.accounts.AccountManagerFuture;
|
| -import android.app.Activity;
|
| -import android.app.ListFragment;
|
| -import android.content.Intent;
|
| -import android.os.AsyncTask;
|
| -import android.os.Bundle;
|
| -import android.util.Log;
|
| -import android.view.ContextMenu;
|
| -import android.view.LayoutInflater;
|
| -import android.view.MenuItem;
|
| -import android.view.View;
|
| -import android.view.ViewGroup;
|
| -import android.widget.ArrayAdapter;
|
| -import android.widget.ListView;
|
| -import android.widget.Toast;
|
| -
|
| -import org.chromium.components.devtools_bridge.RTCConfiguration;
|
| -import org.chromium.components.devtools_bridge.SessionBase;
|
| -import org.chromium.components.devtools_bridge.apiary.ApiaryClientFactory;
|
| -import org.chromium.components.devtools_bridge.apiary.TestApiaryClientFactory;
|
| -import org.chromium.components.devtools_bridge.commands.Command;
|
| -import org.chromium.components.devtools_bridge.commands.CommandSender;
|
| -import org.chromium.components.devtools_bridge.gcd.RemoteInstance;
|
| -
|
| -import java.io.IOException;
|
| -import java.util.List;
|
| -
|
| -/**
|
| - * Fragment of application for manual testing the DevTools bridge. Shows instances
|
| - * registered in GCD and lets unregister them.
|
| - */
|
| -public abstract class RemoteInstanceListFragment extends ListFragment {
|
| - private static final String TAG = "RemoteInstanceListFragment";
|
| - private static final String NO_ID = "";
|
| - private static final int CODE_ACCOUNT_SELECTED = 1;
|
| -
|
| - private final TestApiaryClientFactory mClientFactory = new TestApiaryClientFactory();
|
| - private ArrayAdapter<RemoteInstance> mListAdapter;
|
| - private String mOAuthToken;
|
| - private RemoteInstance mSelected;
|
| -
|
| - @Override
|
| - public void onCreate(Bundle savedInstanceState) {
|
| - super.onCreate(savedInstanceState);
|
| - mListAdapter = new ArrayAdapter<RemoteInstance>(
|
| - getActivity(), android.R.layout.simple_list_item_1);
|
| - new UpdateListAction().execute();
|
| - setListAdapter(mListAdapter);
|
| - }
|
| -
|
| - @Override
|
| - public void onDestroy() {
|
| - new AsyncTask<Void, Void, Void>() {
|
| - @Override
|
| - protected final Void doInBackground(Void... args) {
|
| - mClientFactory.close();
|
| - return null;
|
| - }
|
| - }.execute();
|
| - super.onDestroy();
|
| - }
|
| -
|
| - @Override
|
| - public View onCreateView(
|
| - LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
| - View root = super.onCreateView(inflater, container, savedInstanceState);
|
| - registerForContextMenu(root);
|
| - return root;
|
| - }
|
| -
|
| - @Override
|
| - public void onListItemClick(ListView listView, View view, int position, long id) {
|
| - mSelected = mListAdapter.getItem(position);
|
| - if (mOAuthToken == null) {
|
| - signIn();
|
| - } else {
|
| - getActivity().openContextMenu(view);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public void onCreateContextMenu(
|
| - ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
|
| - super.onCreateContextMenu(menu, view, menuInfo);
|
| -
|
| - if (mOAuthToken == null) return;
|
| -
|
| - menu.add("Connect")
|
| - .setOnMenuItemClickListener(new ConnectAction())
|
| - .setEnabled(mSelected != null);
|
| - menu.add("Send invalid offer")
|
| - .setOnMenuItemClickListener(new SendInvalidOfferAction())
|
| - .setEnabled(mSelected != null);
|
| - menu.add("Delete")
|
| - .setOnMenuItemClickListener(new DeleteInstanceAction(mSelected))
|
| - .setEnabled(mSelected != null);
|
| - menu.add("Update list")
|
| - .setOnMenuItemClickListener(new UpdateListAction());
|
| - menu.add("Delete all")
|
| - .setOnMenuItemClickListener(new DeleteAllAction());
|
| - }
|
| -
|
| - public void signIn() {
|
| - AccountManager manager = AccountManager.get(getActivity());
|
| -
|
| - Intent intent = manager.newChooseAccountIntent(
|
| - null /* selectedAccount */,
|
| - null /* allowableAccounts */,
|
| - new String[] { "com.google" } /* allowableAccountTypes */,
|
| - true /* alwaysPromptForAccount */,
|
| - "Sign into GCD" /* descriptionOverrideText */,
|
| - null /* addAccountAuthTokenType */,
|
| - null /* addAccountRequiredFeatures */,
|
| - null /* addAccountOptions */);
|
| - startActivityForResult(intent, CODE_ACCOUNT_SELECTED);
|
| - }
|
| -
|
| - @Override
|
| - public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
|
| - if (requestCode == CODE_ACCOUNT_SELECTED && resultCode == Activity.RESULT_OK) {
|
| - queryOAuthToken(new Account(
|
| - data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME),
|
| - data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE)));
|
| - }
|
| - }
|
| -
|
| - protected abstract void connect(String oAuthToken, String remoteInstanceId);
|
| -
|
| - public void queryOAuthToken(Account accout) {
|
| - AccountManager manager = AccountManager.get(getActivity());
|
| -
|
| - manager.getAuthToken(
|
| - accout,
|
| - "oauth2:" + ApiaryClientFactory.OAUTH_SCOPE, null /* options */, getActivity(),
|
| - new AccountManagerCallback<Bundle>() {
|
| - @Override
|
| - public void run(AccountManagerFuture<Bundle> future) {
|
| - try {
|
| - mOAuthToken = future.getResult().getString(
|
| - AccountManager.KEY_AUTHTOKEN);
|
| - updateList();
|
| - } catch (Exception e) {
|
| - Log.d(TAG, "Failed to get token: ", e);
|
| - }
|
| - }
|
| - }, null);
|
| - }
|
| -
|
| - public void updateList() {
|
| - new UpdateListAction().execute();
|
| - }
|
| -
|
| - private final class ConnectAction implements MenuItem.OnMenuItemClickListener {
|
| - @Override
|
| - public boolean onMenuItemClick(MenuItem item) {
|
| - if (mOAuthToken != null && mSelected != null) {
|
| - connect(mOAuthToken, mSelected.id);
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| - }
|
| -
|
| - private abstract class AsyncAction extends AsyncTask<Void, Void, Boolean>
|
| - implements MenuItem.OnMenuItemClickListener {
|
| - private final String mActionName;
|
| -
|
| - protected AsyncAction(String actionName) {
|
| - mActionName = actionName;
|
| - }
|
| -
|
| - @Override
|
| - public boolean onMenuItemClick(MenuItem item) {
|
| - execute();
|
| - return true;
|
| - }
|
| -
|
| - @Override
|
| - protected final Boolean doInBackground(Void... args) {
|
| - try {
|
| - doInBackgroundImpl();
|
| - return Boolean.TRUE;
|
| - } catch (IOException e) {
|
| - Log.e(TAG, mActionName + " failed", e);
|
| - return Boolean.FALSE;
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void onPostExecute(Boolean success) {
|
| - if (Boolean.TRUE.equals(success)) {
|
| - onSuccess();
|
| - showToast(mActionName + " completed");
|
| - } else {
|
| - onFailure();
|
| - showToast(mActionName + " failed");
|
| - }
|
| - }
|
| -
|
| - protected void showToast(String message) {
|
| - Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
|
| - }
|
| -
|
| - protected abstract void doInBackgroundImpl() throws IOException;
|
| - protected abstract void onSuccess();
|
| - protected void onFailure() {}
|
| - }
|
| -
|
| - private final class SendInvalidOfferAction extends AsyncAction {
|
| - private final String mOAuthTokenCopy = mOAuthToken;
|
| - private final RemoteInstance mSelectedCopy = mSelected;
|
| - private IOException mException;
|
| -
|
| - public SendInvalidOfferAction() {
|
| - super("Sending invalid offer");
|
| - }
|
| -
|
| - @Override
|
| - protected final void doInBackgroundImpl() throws IOException {
|
| - if (mOAuthTokenCopy == null || mSelected == null) {
|
| - throw new IOException("Action cann't be applied.");
|
| - }
|
| -
|
| - final String sessionId = "sessionId";
|
| - final String offer = "INVALID_OFFER";
|
| - final RTCConfiguration config = new RTCConfiguration();
|
| -
|
| - CommandSender sender = new CommandSender() {
|
| - @Override
|
| - protected void send(Command command, Runnable completionCallback) {
|
| - try {
|
| - mClientFactory.newTestGCDClient(mOAuthTokenCopy)
|
| - .send(mSelectedCopy.id, command);
|
| - } catch (IOException e) {
|
| - mException = e;
|
| - command.setFailure("IO exception");
|
| - } finally {
|
| - completionCallback.run();
|
| - }
|
| - }
|
| - };
|
| -
|
| - sender.startSession(sessionId, config, offer, new SessionBase.NegotiationCallback() {
|
| - @Override
|
| - public void onSuccess(String answer) {
|
| - mException = new IOException("Unexpected success");
|
| - }
|
| -
|
| - @Override
|
| - public void onFailure(String errorMessage) {
|
| - Log.i(TAG, "Expected failure: " + errorMessage);
|
| - }
|
| - });
|
| -
|
| - if (mException != null)
|
| - throw mException;
|
| - }
|
| -
|
| - @Override
|
| - protected void onSuccess() {
|
| - }
|
| - }
|
| -
|
| - private final class UpdateListAction extends AsyncAction {
|
| - private final String mOAuthTokenCopy = mOAuthToken;
|
| - private List<RemoteInstance> mResult;
|
| -
|
| - public UpdateListAction() {
|
| - super("Updating instance list");
|
| - }
|
| -
|
| - @Override
|
| - protected final void doInBackgroundImpl() throws IOException {
|
| - if (mOAuthTokenCopy == null) return;
|
| -
|
| - mResult = mClientFactory.newTestGCDClient(mOAuthTokenCopy).fetchInstances();
|
| - }
|
| -
|
| - @Override
|
| - protected void onSuccess() {
|
| - mListAdapter.clear();
|
| - if (mOAuthTokenCopy == null) {
|
| - mListAdapter.add(new RemoteInstance(NO_ID, "Sign in"));
|
| - } else if (mResult.size() > 0) {
|
| - mListAdapter.addAll(mResult);
|
| - } else {
|
| - mListAdapter.add(new RemoteInstance(NO_ID, "Empty list"));
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void onFailure() {
|
| - mListAdapter.clear();
|
| - mListAdapter.add(new RemoteInstance(NO_ID, "Update failed"));
|
| - }
|
| -
|
| - @Override
|
| - protected void showToast(String message) {}
|
| - }
|
| -
|
| - private final class DeleteInstanceAction extends AsyncAction {
|
| - private final String mOAuthTokenCopy = mOAuthToken;
|
| - private final RemoteInstance mInstance;
|
| -
|
| - public DeleteInstanceAction(RemoteInstance instance) {
|
| - super("Deleting instance");
|
| - mInstance = instance;
|
| - }
|
| -
|
| - @Override
|
| - protected final void doInBackgroundImpl() throws IOException {
|
| - mClientFactory.newTestGCDClient(mOAuthTokenCopy).deleteInstance(mInstance.id);
|
| - }
|
| -
|
| - @Override
|
| - protected void onSuccess() {
|
| - updateList();
|
| - }
|
| - }
|
| -
|
| - private final class DeleteAllAction extends AsyncAction {
|
| - private final String mOAuthTokenCopy = mOAuthToken;
|
| -
|
| - public DeleteAllAction() {
|
| - super("Deleting all");
|
| - }
|
| -
|
| - @Override
|
| - protected final void doInBackgroundImpl() throws IOException {
|
| - for (RemoteInstance instance :
|
| - mClientFactory.newTestGCDClient(mOAuthTokenCopy).fetchInstances()) {
|
| - mClientFactory.newTestGCDClient(mOAuthTokenCopy).deleteInstance(instance.id);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void onSuccess() {
|
| - updateList();
|
| - }
|
| - }
|
| -}
|
|
|