| 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(); | 
| -        } | 
| -    } | 
| -} | 
|  |