| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/SadTabViewFactory.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/SadTabViewFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/SadTabViewFactory.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..43bc84f99062b941e61d9bf3dd1f1de0d51db56a
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/SadTabViewFactory.java
|
| @@ -0,0 +1,74 @@
|
| +// 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.chrome.browser.tab;
|
| +
|
| +import android.content.Context;
|
| +import android.text.method.LinkMovementMethod;
|
| +import android.text.style.ClickableSpan;
|
| +import android.view.LayoutInflater;
|
| +import android.view.View;
|
| +import android.view.View.OnClickListener;
|
| +import android.widget.Button;
|
| +import android.widget.TextView;
|
| +
|
| +import org.chromium.chrome.R;
|
| +import org.chromium.ui.text.SpanApplier;
|
| +import org.chromium.ui.text.SpanApplier.SpanInfo;
|
| +
|
| +/**
|
| + * A factory class for creating the "Sad Tab" view, which is shown in place of a crashed renderer.
|
| + */
|
| +public class SadTabViewFactory {
|
| + /**
|
| + * @param context Context of the resulting Sad Tab view.
|
| + * @param suggestionAction Action to be executed when user clicks "try these suggestions".
|
| + * @param reloadButtonAction Action to be executed when Reload button is pressed.
|
| + * (e.g., refreshing the page)
|
| + * @return A "Sad Tab" view instance which is used in place of a crashed renderer.
|
| + */
|
| + public static View createSadTabView(
|
| + Context context, final OnClickListener suggestionAction,
|
| + OnClickListener reloadButtonAction) {
|
| + // Inflate Sad tab and initialize.
|
| + LayoutInflater inflater = (LayoutInflater) context.getSystemService(
|
| + Context.LAYOUT_INFLATER_SERVICE);
|
| + View sadTabView = inflater.inflate(R.layout.sad_tab, null);
|
| +
|
| + TextView messageText = (TextView) sadTabView.findViewById(R.id.sad_tab_message);
|
| + messageText.setText(getHelpMessage(context, suggestionAction));
|
| + messageText.setMovementMethod(LinkMovementMethod.getInstance());
|
| +
|
| + Button reloadButton = (Button) sadTabView.findViewById(R.id.sad_tab_reload_button);
|
| + reloadButton.setOnClickListener(reloadButtonAction);
|
| +
|
| + return sadTabView;
|
| + }
|
| +
|
| + /**
|
| + * Construct and return help message to be displayed on R.id.sad_tab_message.
|
| + * @param context Context of the resulting Sad Tab view. This is needed to load the strings.
|
| + * @param suggestionAction Action to be executed when user clicks "try these suggestions".
|
| + * @return Help message to be displayed on R.id.sad_tab_message.
|
| + */
|
| + private static CharSequence getHelpMessage(
|
| + Context context, final OnClickListener suggestionAction) {
|
| + String helpMessage = context.getString(R.string.sad_tab_message)
|
| + + "\n\n" + context.getString(R.string.sad_tab_suggestions);
|
| + ClickableSpan span = new ClickableSpan() {
|
| + @Override
|
| + public void onClick(View view) {
|
| + suggestionAction.onClick(view);
|
| + }
|
| +
|
| + // Disable underline on the link text.
|
| + @Override
|
| + public void updateDrawState(android.text.TextPaint textPaint) {
|
| + super.updateDrawState(textPaint);
|
| + textPaint.setUnderlineText(false);
|
| + }
|
| + };
|
| + return SpanApplier.applySpans(helpMessage, new SpanInfo("<link>", "</link>", span));
|
| + }
|
| +}
|
|
|