summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/rtt
diff options
context:
space:
mode:
authorwangqi <wangqi@google.com>2018-04-12 14:44:06 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-12 16:20:40 -0700
commitd6b10d559f345eab2dd3dd89b07cfc3fd79c59bc (patch)
tree0f1f4cc08e164cde9f891f83749edff34eb94a89 /java/com/android/dialer/rtt
parent9ef6d8c84b7b33e069258d41db9eef16e3d2b9fa (diff)
Add RTT transcript to call details.
1. Save RTT transcript when call is destroyed 2. Show RTT transcript link when it's available Bug: 67596257,77717594 Test: manual PiperOrigin-RevId: 192673172 Change-Id: If541ad9137c965166548d2fb449e835b95566727
Diffstat (limited to 'java/com/android/dialer/rtt')
-rw-r--r--java/com/android/dialer/rtt/RttTranscriptContract.java40
-rw-r--r--java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java56
-rw-r--r--java/com/android/dialer/rtt/RttTranscriptUtil.java97
3 files changed, 193 insertions, 0 deletions
diff --git a/java/com/android/dialer/rtt/RttTranscriptContract.java b/java/com/android/dialer/rtt/RttTranscriptContract.java
new file mode 100644
index 000000000..ddc9c5345
--- /dev/null
+++ b/java/com/android/dialer/rtt/RttTranscriptContract.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.rtt;
+
+/** Contract for the RTT transcript database. */
+public final class RttTranscriptContract {
+
+ /** Columns for RTT transcript. */
+ static final class RttTranscriptColumn {
+
+ /**
+ * Unique key that should match {@link android.provider.CallLog.Calls#DATE} of the data row it
+ * is associated with.
+ *
+ * <p>TYPE: TEXT
+ */
+ static final String TRANSCRIPT_ID = "rtt_transcript_id";
+
+ /**
+ * Transcript data, encoded as {@link RttTranscript} proto.
+ *
+ * <p>TYPE: BLOB
+ */
+ static final String TRANSCRIPT_DATA = "transcript_data";
+ }
+}
diff --git a/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java b/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java
new file mode 100644
index 000000000..934eedb5d
--- /dev/null
+++ b/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.rtt;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.os.SystemClock;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.rtt.RttTranscriptContract.RttTranscriptColumn;
+
+/** Database helper class for RTT transcript. */
+final class RttTranscriptDatabaseHelper extends SQLiteOpenHelper {
+
+ static final String TABLE = "rtt_transcript";
+
+ private static final String CREATE_TABLE_SQL =
+ "create table if not exists "
+ + TABLE
+ + " ("
+ + (RttTranscriptColumn.TRANSCRIPT_ID + " integer primary key, ")
+ + (RttTranscriptColumn.TRANSCRIPT_DATA + " blob not null")
+ + ");";
+
+ RttTranscriptDatabaseHelper(Context context) {
+ super(context, "rtt_transcript.db", null, 1);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ LogUtil.enterBlock("RttTranscriptDatabaseHelper.onCreate");
+ long startTime = SystemClock.elapsedRealtime();
+ db.execSQL(CREATE_TABLE_SQL);
+ LogUtil.i(
+ "RttTranscriptDatabaseHelper.onCreate",
+ "took: %dms",
+ SystemClock.elapsedRealtime() - startTime);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
+}
diff --git a/java/com/android/dialer/rtt/RttTranscriptUtil.java b/java/com/android/dialer/rtt/RttTranscriptUtil.java
new file mode 100644
index 000000000..e55d2ea55
--- /dev/null
+++ b/java/com/android/dialer/rtt/RttTranscriptUtil.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.rtt;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.common.Assert;
+import com.android.dialer.rtt.RttTranscriptContract.RttTranscriptColumn;
+import com.google.protobuf.InvalidProtocolBufferException;
+
+/** Util class to save and load RTT transcript. */
+public final class RttTranscriptUtil {
+
+ private final RttTranscriptDatabaseHelper databaseHelper;
+
+ public RttTranscriptUtil(Context context) {
+ databaseHelper = new RttTranscriptDatabaseHelper(context);
+ }
+
+ /** @return true if there is RTT transcript available. */
+ @WorkerThread
+ public boolean checkRttTranscriptAvailability(String transcriptId) {
+ Assert.isWorkerThread();
+ try (Cursor cursor =
+ databaseHelper
+ .getReadableDatabase()
+ .query(
+ RttTranscriptDatabaseHelper.TABLE,
+ new String[] {RttTranscriptColumn.TRANSCRIPT_ID},
+ RttTranscriptColumn.TRANSCRIPT_ID + " = ?",
+ new String[] {transcriptId},
+ null,
+ null,
+ null)) {
+ if (cursor != null && cursor.moveToFirst()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ @WorkerThread
+ public RttTranscript getRttTranscript(String transcriptId) {
+ Assert.isWorkerThread();
+ try (Cursor cursor =
+ databaseHelper
+ .getReadableDatabase()
+ .query(
+ RttTranscriptDatabaseHelper.TABLE,
+ new String[] {RttTranscriptColumn.TRANSCRIPT_DATA},
+ RttTranscriptColumn.TRANSCRIPT_ID + " = ?",
+ new String[] {transcriptId},
+ null,
+ null,
+ null)) {
+ if (cursor != null && cursor.moveToFirst()) {
+ try {
+ return RttTranscript.parseFrom(cursor.getBlob(0));
+ } catch (InvalidProtocolBufferException e) {
+ throw new RuntimeException("Parse failed for RTT transcript", e);
+ }
+ } else {
+ return null;
+ }
+ }
+ }
+
+ @WorkerThread
+ public void saveRttTranscript(RttTranscript rttTranscript) {
+ Assert.isWorkerThread();
+ ContentValues value = new ContentValues();
+ value.put(RttTranscriptColumn.TRANSCRIPT_ID, rttTranscript.getId());
+ value.put(RttTranscriptColumn.TRANSCRIPT_DATA, rttTranscript.toByteArray());
+ long id =
+ databaseHelper.getWritableDatabase().insert(RttTranscriptDatabaseHelper.TABLE, null, value);
+ if (id < 0) {
+ throw new RuntimeException("Failed to save RTT transcript");
+ }
+ }
+}