196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* 257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler * Copyright (C) 2010 The Android Open Source Project 396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License. 696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at 796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and 1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License. 1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerpackage com.android.email.activity.setup; 1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1957f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.app.Fragment; 208ee17c7012105fd7a5bad644b455d3e894b557dcMakoto Onukiimport android.content.Context; 2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle; 2257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.LayoutInflater; 2357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.View; 2457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.ViewGroup; 251a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onukiimport android.webkit.WebView; 2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CheckBox; 2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CompoundButton; 2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CompoundButton.OnCheckedChangeListener; 29f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank 30f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.Preferences; 31f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.R; 32f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.activity.UiUtilities; 33f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.service.EmailServiceUtils; 34f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email2.ui.MailActivityEmail; 35f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.Logging; 36560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedyimport com.android.mail.utils.LogUtils; 3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 381a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onukipublic class DebugFragment extends Fragment implements OnCheckedChangeListener, 391a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki View.OnClickListener { 4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private Preferences mPreferences; 4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 427985b43ab7310f76c170266da346f993d2f86051Paul Westbrook // Public no-args constructor needed for fragment re-instantiation 437985b43ab7310f76c170266da346f993d2f86051Paul Westbrook public DebugFragment() {} 447985b43ab7310f76c170266da346f993d2f86051Paul Westbrook 4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @Override 4657f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler public View onCreateView(LayoutInflater inflater, ViewGroup container, 4757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler Bundle savedInstanceState) { 48f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank if (Logging.DEBUG_LIFECYCLE && MailActivityEmail.DEBUG) { 49560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedy LogUtils.d(Logging.LOG_TAG, "AccountSetupBasicsFragment onCreateView"); 5057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler } 5157f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler View view = inflater.inflate(R.layout.debug, container, false); 5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler Context context = getActivity(); 5457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler mPreferences = Preferences.getPreferences(context); 5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 565bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler final CheckBox enableDebugLoggingView = UiUtilities.getView(view, R.id.debug_logging); 575bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableDebugLoggingView.setChecked(MailActivityEmail.DEBUG); 5891237e9dcb0a948f17488b464edabcea0f259d31Makoto Onuki 595bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler final CheckBox enableVerboseLoggingView = UiUtilities.getView(view, R.id.verbose_logging); 605bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler final CheckBox enableFileLoggingView = UiUtilities.getView(view, R.id.file_logging); 61e36b6ff4fa808afa84dc09fa82587dae106c8d3dAndrew Stadler 62e36b6ff4fa808afa84dc09fa82587dae106c8d3dAndrew Stadler // Note: To prevent recursion while presetting checkboxes, assign all listeners last 635bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableDebugLoggingView.setOnCheckedChangeListener(this); 643a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank 65f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank if (EmailServiceUtils.areRemoteServicesInstalled(context)) { 665bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableVerboseLoggingView.setChecked(MailActivityEmail.DEBUG_VERBOSE); 675bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableFileLoggingView.setChecked(MailActivityEmail.DEBUG_FILE); 685bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableVerboseLoggingView.setOnCheckedChangeListener(this); 695bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableFileLoggingView.setOnCheckedChangeListener(this); 703a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank } else { 715bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableVerboseLoggingView.setVisibility(View.GONE); 725bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableFileLoggingView.setVisibility(View.GONE); 733a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank } 7457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler 752fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.getView(view, R.id.clear_webview_cache).setOnClickListener(this); 761a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki 775bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler final CheckBox enableStrictModeView = 782fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.getView(view, R.id.debug_enable_strict_mode); 795bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableStrictModeView.setChecked(mPreferences.getEnableStrictMode()); 805bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler enableStrictModeView.setOnCheckedChangeListener(this); 8119b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki 8257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler return view; 8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 851a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki @Override 8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 8776a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler switch (buttonView.getId()) { 8876a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler case R.id.debug_logging: 893a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank mPreferences.setEnableDebugLogging(isChecked); 90f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.DEBUG = isChecked; 91f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.DEBUG_EXCHANGE = isChecked; 9276a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler break; 93f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank case R.id.verbose_logging: 9476a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler mPreferences.setEnableExchangeLogging(isChecked); 95f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.DEBUG_VERBOSE = isChecked; 9676a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler break; 97f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank case R.id.file_logging: 9876a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler mPreferences.setEnableExchangeFileLogging(isChecked); 99f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.DEBUG_FILE = isChecked; 10076a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler break; 10119b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki case R.id.debug_enable_strict_mode: 10219b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki mPreferences.setEnableStrictMode(isChecked); 103f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.enableStrictMode(isChecked); 10419b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki break; 10576a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler } 10676a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler 107f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank MailActivityEmail.updateLoggingFlags(getActivity()); 1088ee17c7012105fd7a5bad644b455d3e894b557dcMakoto Onuki } 1091a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki 1101a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki @Override 1111a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki public void onClick(View v) { 1121a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki switch (v.getId()) { 1131a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki case R.id.clear_webview_cache: 1141a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki clearWebViewCache(); 1151a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki break; 1161a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki } 1171a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki } 1181a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki 1191a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki private void clearWebViewCache() { 1201a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki WebView webview = new WebView(getActivity()); 1211a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki try { 1221a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki webview.clearCache(true); 123560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedy LogUtils.w(Logging.LOG_TAG, "Cleard WebView cache."); 1241a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki } finally { 1251a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki webview.destroy(); 1261a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki } 1271a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki } 12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project} 129