| Index: tools/android/memconsumer/java/src/org/chromium/memconsumer/MemConsumer.java
|
| diff --git a/tools/android/memconsumer/java/src/org/chromium/memconsumer/MemConsumer.java b/tools/android/memconsumer/java/src/org/chromium/memconsumer/MemConsumer.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..23ad2b878e224e4af975c9273b4429aa46a4b0b1
|
| --- /dev/null
|
| +++ b/tools/android/memconsumer/java/src/org/chromium/memconsumer/MemConsumer.java
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2013 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.memconsumer;
|
| +
|
| +import android.app.Activity;
|
| +import android.content.ComponentName;
|
| +import android.content.Context;
|
| +import android.content.Intent;
|
| +import android.content.ServiceConnection;
|
| +import android.os.Bundle;
|
| +import android.os.IBinder;
|
| +import android.view.Gravity;
|
| +import android.view.KeyEvent;
|
| +import android.view.View;
|
| +import android.widget.EditText;
|
| +import android.widget.NumberPicker;
|
| +import android.widget.TextView;
|
| +
|
| +public class MemConsumer extends Activity {
|
| + public static final String NOTIFICATION_ACTION =
|
| + MemConsumer.class.toString() + ".NOTIFICATION";
|
| +
|
| + private ResidentService mResidentService;
|
| + private int mMemory = 0;
|
| + private NumberPicker mMemoryPicker;
|
| +
|
| + private ServiceConnection mServiceConnection = new ServiceConnection() {
|
| + @Override
|
| + public void onServiceConnected(ComponentName name, IBinder binder) {
|
| + mResidentService = ((ResidentService.ServiceBinder) binder).getService();
|
| + mResidentService.useMemory(mMemory);
|
| + }
|
| +
|
| + @Override
|
| + public void onServiceDisconnected(ComponentName name) {
|
| + mResidentService = null;
|
| + }
|
| + };
|
| +
|
| + @Override
|
| + protected void onCreate(Bundle savedInstanceState) {
|
| + super.onCreate(savedInstanceState);
|
| + mMemoryPicker = new NumberPicker(this);
|
| + mMemoryPicker.setGravity(Gravity.CENTER);
|
| + mMemoryPicker.setMaxValue(Integer.MAX_VALUE);
|
| + mMemoryPicker.setMinValue(0);
|
| + mMemoryPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
|
| + @Override
|
| + public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
|
| + updateMemoryConsumption(picker.getValue());
|
| + }
|
| + });
|
| + for (int i = 0; i < mMemoryPicker.getChildCount(); i++) {
|
| + View child = mMemoryPicker.getChildAt(i);
|
| + if (child instanceof EditText) {
|
| + EditText editText = (EditText) child;
|
| + editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
| + @Override
|
| + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
| + if (v.getText().length() > 0) {
|
| + updateMemoryConsumption(Integer.parseInt(v.getText().toString()));
|
| + }
|
| + return false;
|
| + }
|
| + });
|
| + }
|
| + }
|
| + setContentView(mMemoryPicker);
|
| + onNewIntent(getIntent());
|
| + }
|
| +
|
| + @Override
|
| + protected void onNewIntent(Intent intent) {
|
| + super.onNewIntent(intent);
|
| + if (intent.getAction() == NOTIFICATION_ACTION) {
|
| + updateMemoryConsumption(0);
|
| + return;
|
| + }
|
| + if (!intent.hasExtra("memory")) return;
|
| + updateMemoryConsumption(intent.getIntExtra("memory", 0));
|
| + }
|
| +
|
| + void updateMemoryConsumption(int memory) {
|
| + if (memory == mMemory || memory < 0) return;
|
| + mMemory = memory;
|
| + mMemoryPicker.setValue(mMemory);
|
| + if (mResidentService == null) {
|
| + if (mMemory > 0) {
|
| + Intent resident = new Intent();
|
| + resident.setClass(this, ResidentService.class);
|
| + startService(resident);
|
| + bindService(new Intent(this, ResidentService.class),
|
| + mServiceConnection,
|
| + Context.BIND_AUTO_CREATE);
|
| + }
|
| + } else {
|
| + mResidentService.useMemory(mMemory);
|
| + if (mMemory == 0) {
|
| + unbindService(mServiceConnection);
|
| + stopService(new Intent(this, ResidentService.class));
|
| + mResidentService = null;
|
| + }
|
| + }
|
| + }
|
| +}
|
|
|