EMMA Coverage Report (generated Tue Aug 20 10:07:21 PDT 2013)
[all classes][org.chromium.chrome.testshell]

COVERAGE SUMMARY FOR SOURCE FILE [ChromiumTestShellActivity.java]

nameclass, %method, %block, %line, %
ChromiumTestShellActivity.java67%  (2/3)50%  (12/24)44%  (149/336)41%  (38.6/94)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ChromiumTestShellActivity$20%   (0/1)0%   (0/2)0%   (0/12)0%   (0/2)
ChromiumTestShellActivity$2 (ChromiumTestShellActivity): void 0%   (0/1)0%   (0/6)0%   (0/1)
getContentVideoViewClient (): ContentVideoViewClient 0%   (0/1)0%   (0/6)0%   (0/1)
     
class ChromiumTestShellActivity100% (1/1)50%  (10/20)44%  (132/299)40%  (35.6/88)
createTab (String): void 0%   (0/1)0%   (0/12)0%   (0/3)
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/9)0%   (0/4)
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)
onCreate (Bundle): void 100% (1/1)68%  (23/34)67%  (8/12)
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)
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)
onPause (): void 100% (1/1)100% (10/10)100% (4/4)
     
class ChromiumTestShellActivity$1100% (1/1)100% (2/2)68%  (17/25)67%  (4/6)
run (int): void 100% (1/1)50%  (8/16)60%  (3/5)
ChromiumTestShellActivity$1 (ChromiumTestShellActivity, Bundle): void 100% (1/1)100% (9/9)100% (1/1)

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

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