1e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer/* 2e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * Copyright (C) 2015 The Android Open Source Project 3e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * 4e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * Licensed under the Apache License, Version 2.0 (the "License"); 5e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * you may not use this file except in compliance with the License. 6e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * You may obtain a copy of the License at 7e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * 8e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * http://www.apache.org/licenses/LICENSE-2.0 9e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * 10e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * Unless required by applicable law or agreed to in writing, software 11e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * distributed under the License is distributed on an "AS IS" BASIS, 12e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * See the License for the specific language governing permissions and 14e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * limitations under the License. 15e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer */ 16e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 17e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerpackage org.chromium.latency.walt; 18e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 19e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 20e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.content.BroadcastReceiver; 21e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.content.Context; 22e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.content.Intent; 23e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.os.Bundle; 24e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.support.v4.app.Fragment; 25e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.text.method.ScrollingMovementMethod; 26e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.view.LayoutInflater; 27e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.view.View; 28e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.view.ViewGroup; 29e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerimport android.widget.TextView; 30e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 31e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 32e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer/** 33e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer * This screen allows to perform different tasks useful for diagnostics. 34e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer */ 35e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmerpublic class DiagnosticsFragment extends Fragment { 36e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 37e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer private SimpleLogger logger; 38e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer private TextView logTextView; 39e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 40e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 41e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer private BroadcastReceiver logReceiver = new BroadcastReceiver() { 42e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer @Override 43e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public void onReceive(Context context, Intent intent) { 44e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer String msg = intent.getStringExtra("message"); 45e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer DiagnosticsFragment.this.appendLogText(msg); 46e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 47e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer }; 48e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 49e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public DiagnosticsFragment() { 50e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer // Required empty public constructor 51e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 52e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 53e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 54e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer @Override 55e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public View onCreateView(LayoutInflater inflater, ViewGroup container, 56e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer Bundle savedInstanceState) { 57e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logger = SimpleLogger.getInstance(getContext()); 58e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer // Inflate the layout for this fragment 59e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer final View view = inflater.inflate(R.layout.fragment_diagnostics, container, false); 60e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logTextView = (TextView) view.findViewById(R.id.txt_log_diag); 61e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer return view; 62e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 63e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 64e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer @Override 65e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public void onResume() { 66e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer super.onResume(); 67e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logTextView.setMovementMethod(new ScrollingMovementMethod()); 68e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logTextView.setText(logger.getLogText()); 69e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logger.registerReceiver(logReceiver); 70e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 71e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 72e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer @Override 73e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public void onPause() { 74e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logger.unregisterReceiver(logReceiver); 75e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer super.onPause(); 76e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 77e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 78e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer 79e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer public void appendLogText(String msg) { 80e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer logTextView.append(msg + "\n"); 81e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer } 82e76dcf96b0c451e46cddfa695de8feeb92533937Andrew Lehmer} 83