/* 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/. */ #filter substitution package org.mozilla.gecko; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; interface GeckoActivityStatus { public boolean isGeckoActivityOpened(); public boolean isFinishing(); // typically from android.app.Activity }; public class GeckoActivity extends Activity implements GeckoActivityStatus { // has this activity recently started another Gecko activity? private boolean mGeckoActivityOpened = false; @Override public void onPause() { super.onPause(); if (getApplication() instanceof GeckoApplication) { ((GeckoApplication) getApplication()).onActivityPause(this); } } @Override public void onResume() { super.onResume(); if (getApplication() instanceof GeckoApplication) { ((GeckoApplication) getApplication()).onActivityResume(this); mGeckoActivityOpened = false; } } #ifdef MOZ_ANDROID_ANR_REPORTER @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ANRReporter.register(getApplicationContext()); } @Override public void onDestroy() { ANRReporter.unregister(); super.onDestroy(); } #endif @Override public void startActivity(Intent intent) { checkIfGeckoActivity(intent); super.startActivity(intent); } @Override public void startActivityForResult(Intent intent, int request) { checkIfGeckoActivity(intent); super.startActivityForResult(intent, request); } private void checkIfGeckoActivity(Intent intent) { // Whenever we call our own activity, the component and it's package name is set. // If we call an activity from another package, or an open intent (leaving android to resolve) // component has a different package name or it is null. ComponentName component = intent.getComponent(); mGeckoActivityOpened = false; if (component != null && component.getPackageName() != null && component.getPackageName().equals("@ANDROID_PACKAGE_NAME@")) { mGeckoActivityOpened = true; } } public boolean isGeckoActivityOpened() { return mGeckoActivityOpened; } public boolean isApplicationInBackground() { return ((GeckoApplication) getApplication()).isApplicationInBackground(); } @Override public void onLowMemory() { MemoryMonitor.getInstance().onLowMemory(); super.onLowMemory(); } @Override public void onTrimMemory(int level) { MemoryMonitor.getInstance().onTrimMemory(level); super.onTrimMemory(level); } public LightweightTheme getLightweightTheme() { return ((GeckoApplication) getApplication()).getLightweightTheme(); } }