EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.chrome.testshell]

COVERAGE SUMMARY FOR SOURCE FILE [ChromiumTestShellActivity.java]

nameclass, %method, %block, %line, %
ChromiumTestShellActivity.java100% (3/3)56%  (14/25)49%  (161/328)44%  (40.6/92)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ChromiumTestShellActivity100% (1/1)55%  (11/20)49%  (140/287)45%  (37.6/84)
onActivityResult (int, int, Intent): void 0%   (0/1)0%   (0/8)0%   (0/2)
onCreateOptionsMenu (Menu): boolean 0%   (0/1)0%   (0/9)0%   (0/3)
onDestroy (): void 0%   (0/1)0%   (0/12)0%   (0/5)
onKeyUp (int, KeyEvent): boolean 0%   (0/1)0%   (0/22)0%   (0/6)
onNewIntent (Intent): void 0%   (0/1)0%   (0/31)0%   (0/11)
onOptionsItemSelected (MenuItem): boolean 0%   (0/1)0%   (0/20)0%   (0/6)
onPrepareOptionsMenu (Menu): boolean 0%   (0/1)0%   (0/25)0%   (0/6)
onSaveInstanceState (Bundle): void 0%   (0/1)0%   (0/5)0%   (0/2)
showPopupMenu (): void 0%   (0/1)0%   (0/3)0%   (0/2)
waitForDebuggerIfNeeded (): void 100% (1/1)36%  (5/14)40%  (2/5)
onResume (): void 100% (1/1)80%  (8/10)94%  (3.8/4)
getUrlFromIntent (Intent): String 100% (1/1)86%  (6/7)85%  (0.8/1)
ChromiumTestShellActivity (): void 100% (1/1)100% (3/3)100% (1/1)
access$000 (ChromiumTestShellActivity, Bundle): void 100% (1/1)100% (4/4)100% (1/1)
createTab (String): void 100% (1/1)100% (12/12)100% (3/3)
finishInitialization (Bundle): void 100% (1/1)100% (54/54)100% (13/13)
getActiveContentView (): ContentView 100% (1/1)100% (10/10)100% (2/2)
getActiveTab (): TestShellTab 100% (1/1)100% (9/9)100% (1/1)
onCreate (Bundle): void 100% (1/1)100% (19/19)100% (7/7)
onPause (): void 100% (1/1)100% (10/10)100% (4/4)
     
class ChromiumTestShellActivity$2100% (1/1)50%  (1/2)50%  (6/12)50%  (1/2)
getContentVideoViewClient (): ContentVideoViewClient 0%   (0/1)0%   (0/6)0%   (0/1)
ChromiumTestShellActivity$2 (ChromiumTestShellActivity): void 100% (1/1)100% (6/6)100% (1/1)
     
class ChromiumTestShellActivity$1100% (1/1)67%  (2/3)52%  (15/29)43%  (3/7)
onFailure (): void 0%   (0/1)0%   (0/14)0%   (0/4)
ChromiumTestShellActivity$1 (ChromiumTestShellActivity, Bundle): void 100% (1/1)100% (9/9)100% (1/1)
onSuccess (boolean): void 100% (1/1)100% (6/6)100% (2/2)

1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.chrome.testshell;
6 
7import android.content.Intent;
8import android.os.Bundle;
9import android.text.TextUtils;
10import android.util.Log;
11import android.view.KeyEvent;
12import android.view.Menu;
13import android.view.MenuInflater;
14import android.view.MenuItem;
15import android.widget.Toast;
16 
17import org.chromium.base.ChromiumActivity;
18import org.chromium.base.MemoryPressureListener;
19import org.chromium.chrome.browser.DevToolsServer;
20import org.chromium.chrome.testshell.sync.SyncController;
21import org.chromium.content.browser.ActivityContentVideoViewClient;
22import org.chromium.content.browser.BrowserStartupController;
23import org.chromium.content.browser.ContentVideoViewClient;
24import org.chromium.content.browser.ContentView;
25import org.chromium.content.browser.ContentViewClient;
26import org.chromium.content.browser.DeviceUtils;
27import org.chromium.content.common.CommandLine;
28import org.chromium.sync.signin.ChromeSigninController;
29import org.chromium.ui.WindowAndroid;
30 
31/**
32 * The {@link android.app.Activity} component of a basic test shell to test Chrome features.
33 */
34public class ChromiumTestShellActivity extends ChromiumActivity implements MenuHandler {
35    private static final String TAG = "ChromiumTestShellActivity";
36    /**
37     * Sending an intent with this action will simulate a memory pressure signal
38     * at a critical level.
39     */
40    private static final String ACTION_LOW_MEMORY =
41            "org.chromium.chrome_test_shell.action.ACTION_LOW_MEMORY";
42 
43    /**
44     * Sending an intent with this action will simulate a memory pressure signal
45     * at a moderate level.
46     */
47    private static final String ACTION_TRIM_MEMORY_MODERATE =
48            "org.chromium.chrome_test_shell.action.ACTION_TRIM_MEMORY_MODERATE";
49 
50    private WindowAndroid mWindow;
51    private TabManager mTabManager;
52    private DevToolsServer mDevToolsServer;
53 
54    @Override
55    protected void onCreate(final Bundle savedInstanceState) {
56        super.onCreate(savedInstanceState);
57 
58        ChromiumTestShellApplication.initCommandLine();
59        waitForDebuggerIfNeeded();
60 
61        DeviceUtils.addDeviceSpecificUserAgentSwitch(this);
62 
63        BrowserStartupController.StartupCallback callback =
64                new BrowserStartupController.StartupCallback() {
65                    @Override
66                    public void onSuccess(boolean alreadyStarted) {
67                        finishInitialization(savedInstanceState);
68                    }
69 
70                    @Override
71                    public void onFailure() {
72                        Toast.makeText(ChromiumTestShellActivity.this,
73                                       R.string.browser_process_initialization_failed,
74                                       Toast.LENGTH_SHORT).show();
75                        Log.e(TAG, "Chromium browser process initialization failed");
76                        finish();
77                    }
78                };
79        BrowserStartupController.get(this).startBrowserProcessesAsync(callback);
80    }
81 
82    private void finishInitialization(final Bundle savedInstanceState) {
83        setContentView(R.layout.testshell_activity);
84        mTabManager = (TabManager) findViewById(R.id.tab_manager);
85        String startupUrl = getUrlFromIntent(getIntent());
86        if (!TextUtils.isEmpty(startupUrl)) {
87            mTabManager.setStartupUrl(startupUrl);
88        }
89        TestShellToolbar mToolbar = (TestShellToolbar) findViewById(R.id.toolbar);
90        mToolbar.setMenuHandler(this);
91 
92        mWindow = new WindowAndroid(this);
93        mWindow.restoreInstanceState(savedInstanceState);
94        mTabManager.setWindow(mWindow);
95 
96        mDevToolsServer = new DevToolsServer("chromium_testshell");
97        mDevToolsServer.setRemoteDebuggingEnabled(true);
98    }
99 
100    @Override
101    protected void onDestroy() {
102        super.onDestroy();
103 
104        if (mDevToolsServer != null)
105            mDevToolsServer.destroy();
106        mDevToolsServer = null;
107    }
108 
109    @Override
110    protected void onSaveInstanceState(Bundle outState) {
111        // TODO(dtrainor): Save/restore the tab state.
112        mWindow.saveInstanceState(outState);
113    }
114 
115    @Override
116    public boolean onKeyUp(int keyCode, KeyEvent event) {
117        if (keyCode == KeyEvent.KEYCODE_BACK) {
118            TestShellTab tab = getActiveTab();
119            if (tab != null && tab.getContentView().canGoBack()) {
120                tab.getContentView().goBack();
121                return true;
122            }
123        }
124 
125        return super.onKeyUp(keyCode, event);
126    }
127 
128    @Override
129    protected void onNewIntent(Intent intent) {
130        if (ACTION_LOW_MEMORY.equals(intent.getAction())) {
131            MemoryPressureListener.simulateMemoryPressureSignal(TRIM_MEMORY_COMPLETE);
132            return;
133        } else if (ACTION_TRIM_MEMORY_MODERATE.equals(intent.getAction())) {
134            MemoryPressureListener.simulateMemoryPressureSignal(TRIM_MEMORY_MODERATE);
135            return;
136        }
137 
138        String url = getUrlFromIntent(intent);
139        if (!TextUtils.isEmpty(url)) {
140            TestShellTab tab = getActiveTab();
141            if (tab != null) tab.loadUrlWithSanitization(url);
142        }
143    }
144 
145    @Override
146    protected void onPause() {
147        ContentView view = getActiveContentView();
148        if (view != null) view.onActivityPause();
149 
150        super.onPause();
151    }
152 
153    @Override
154    protected void onResume() {
155        super.onResume();
156 
157        ContentView view = getActiveContentView();
158        if (view != null) view.onActivityResume();
159    }
160 
161    @Override
162    public void onActivityResult(int requestCode, int resultCode, Intent data) {
163        mWindow.onActivityResult(requestCode, resultCode, data);
164    }
165 
166    /**
167     * @return The {@link TestShellTab} that is currently visible.
168     */
169    public TestShellTab getActiveTab() {
170        return mTabManager != null ? mTabManager.getCurrentTab() : null;
171    }
172 
173    /**
174     * @return The ContentView of the active tab.
175     */
176    public ContentView getActiveContentView() {
177        TestShellTab tab = getActiveTab();
178        return tab != null ? tab.getContentView() : null;
179    }
180 
181    /**
182     * Creates a {@link TestShellTab} with a URL specified by {@code url}.
183     *
184     * @param url The URL the new {@link TestShellTab} should start with.
185     */
186    public void createTab(String url) {
187        mTabManager.createTab(url);
188        getActiveContentView().setContentViewClient(new ContentViewClient() {
189            @Override
190            public ContentVideoViewClient getContentVideoViewClient() {
191                return new ActivityContentVideoViewClient(ChromiumTestShellActivity.this);
192            }
193        });
194    }
195 
196    /**
197     * From {@link MenuHandler}.
198     */
199    @Override
200    public void showPopupMenu() {
201        openOptionsMenu();
202    }
203 
204    @Override
205    public boolean onCreateOptionsMenu(Menu menu) {
206        MenuInflater inflater = getMenuInflater();
207        inflater.inflate(R.menu.main_menu, menu);
208        return true;
209    }
210 
211    @Override
212    public boolean onOptionsItemSelected(MenuItem item) {
213        switch (item.getItemId()) {
214            case R.id.signin:
215                if (ChromeSigninController.get(this).isSignedIn())
216                    SyncController.openSignOutDialog(getFragmentManager());
217                else
218                    SyncController.openSigninDialog(getFragmentManager());
219                return true;
220            default:
221                return super.onOptionsItemSelected(item);
222        }
223    }
224 
225    @Override
226    public boolean onPrepareOptionsMenu(Menu menu) {
227        menu.setGroupVisible(R.id.MAIN_MENU, true);
228        MenuItem signinItem = menu.findItem(R.id.signin);
229        if (ChromeSigninController.get(this).isSignedIn())
230            signinItem.setTitle(ChromeSigninController.get(this).getSignedInAccountName());
231        else
232            signinItem.setTitle(R.string.signin_sign_in);
233        return true;
234    }
235 
236    private void waitForDebuggerIfNeeded() {
237        if (CommandLine.getInstance().hasSwitch(CommandLine.WAIT_FOR_JAVA_DEBUGGER)) {
238            Log.e(TAG, "Waiting for Java debugger to connect...");
239            android.os.Debug.waitForDebugger();
240            Log.e(TAG, "Java debugger connected. Resuming execution.");
241        }
242    }
243 
244    private static String getUrlFromIntent(Intent intent) {
245        return intent != null ? intent.getDataString() : null;
246    }
247}

[all classes][org.chromium.chrome.testshell]
EMMA 2.0.5312 (C) Vladimir Roubtsov