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