[cleanup] remove //topaz/app/link_viewer

MS-2287 #done

TEST =
- fx set x64 --packages topaz/packages/buildbot
- fx build

Change-Id: I42a75bae371f34ce183f394c28e7ddfbdd0b998d
diff --git a/README.md b/README.md
index ba1147f..3eb00e0 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,7 @@
 * topaz/app/contacts: 80378fe470817750188707de29237282892a3142
 * topaz/app/documents: b5a3ee29b15414f232865128195d14bd8811ab02
 * topaz/app/image: 5e731a943a907cf960ecfbda1c391958f9093afa
+* topaz/app/link_viewer: 00fe1236c6851da5d54c625a8293561bb617804c
 * topaz/app/video: fc03877f787fc119140b900d476c4563bd04a529
 * topaz/tools/dartfmt_extras: acc1f05718af2bcfbba3317a456f82b67eec4e42
 * topaz/tools/mod: acc1f05718af2bcfbba3317a456f82b67eec4e42
diff --git a/app/link_viewer/BUILD.gn b/app/link_viewer/BUILD.gn
deleted file mode 100644
index 1c1ae5a..0000000
--- a/app/link_viewer/BUILD.gn
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//topaz/runtime/flutter_runner/flutter_app.gni")
-
-flutter_app("link_viewer") {
-  main_dart = "lib/main.dart"
-
-  meta = [
-    {
-      path = rebase_path("meta/link_viewer.cmx")
-      dest = "link_viewer.cmx"
-    },
-  ]
-
-  sources = [
-    "src/models/link_viewer_model.dart",
-  ]
-
-  deps = [
-    "//third_party/dart-pkg/git/flutter/packages/flutter",
-    "//topaz/public/lib/app_driver/dart",
-    "//topaz/public/lib/app/dart",
-    "//topaz/public/lib/widgets/dart",
-  ]
-}
diff --git a/app/link_viewer/analysis_options.yaml b/app/link_viewer/analysis_options.yaml
deleted file mode 100644
index c7bbb17..0000000
--- a/app/link_viewer/analysis_options.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-include: ../../tools/analysis_options.yaml
diff --git a/app/link_viewer/lib/main.dart b/app/link_viewer/lib/main.dart
deleted file mode 100644
index f1cafac..0000000
--- a/app/link_viewer/lib/main.dart
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:lib.app_driver.dart/module_driver.dart';
-import 'package:lib.app.dart/logging.dart';
-import 'package:lib.widgets.dart/model.dart';
-
-import 'src/models/link_viewer_model.dart';
-
-const double _kJsonViewerElevation = 1.0;
-const double _kJsonViewerBorderRadius = 8.0;
-const double _kJsonViewerListViewInset = 16.0;
-const double _kJsonViewerEntryIndentPerLevel = 32.0;
-
-const String _kListEntryPrefix = '\u{2022}'; // Unicode bullet point.
-
-/// Main entry point to the link_viewer module.
-void main() {
-  setupLogger();
-
-  final driver = ModuleDriver()..start();
-  final model = LinkViewerModel();
-
-  driver.link.watch().listen(
-        model.onData,
-        onError: (err, stack) => log.warning(err, stack),
-      );
-
-  runApp(
-    MaterialApp(
-      home: ScopedModel<LinkViewerModel>(
-        model: model,
-        child: new Center(
-          child: new PhysicalModel(
-            color: Colors.black,
-            elevation: _kJsonViewerElevation,
-            borderRadius: new BorderRadius.circular(_kJsonViewerBorderRadius),
-            child: new _JsonViewer(),
-          ),
-        ),
-      ),
-    ),
-  );
-}
-
-class _JsonViewer extends StatelessWidget {
-  @override
-  Widget build(BuildContext context) =>
-      new ScopedModelDescendant<LinkViewerModel>(
-        builder: (_, __, LinkViewerModel model) {
-          List<_Entry> entries = <_Entry>[];
-          _addEntries(0, model.decodedJson, entries);
-          if (entries.length > 20) {
-            return new ListView(
-              shrinkWrap: true,
-              padding: const EdgeInsets.all(_kJsonViewerListViewInset),
-              physics: const BouncingScrollPhysics(),
-              children: entries,
-            );
-          } else {
-            return new SingleChildScrollView(
-              padding: const EdgeInsets.all(_kJsonViewerListViewInset),
-              physics: const BouncingScrollPhysics(),
-              child: new Column(
-                crossAxisAlignment: CrossAxisAlignment.start,
-                children: entries,
-              ),
-            );
-          }
-        },
-      );
-
-  void _addEntries(
-    int indentLevel,
-    Object decodedJson,
-    List<_Entry> entries,
-  ) {
-    if (decodedJson is List) {
-      for (int i = 0; i < decodedJson.length; i++) {
-        if (decodedJson[i] is List || decodedJson[i] is Map) {
-          entries.add(
-            new _Entry(indentLevel: indentLevel, prefix: _kListEntryPrefix),
-          );
-          _addEntries(indentLevel + 1, decodedJson[i], entries);
-        } else {
-          entries.add(
-            new _Entry(
-              indentLevel: indentLevel,
-              prefix: _kListEntryPrefix,
-              value: ' ${decodedJson[i]}',
-            ),
-          );
-        }
-      }
-    } else if (decodedJson is Map) {
-      for (Object key in decodedJson.keys) {
-        if (decodedJson[key] is List || decodedJson[key] is Map) {
-          entries.add(
-            new _Entry(indentLevel: indentLevel, prefix: '$key:'),
-          );
-          _addEntries(indentLevel + 1, decodedJson[key], entries);
-        } else {
-          entries.add(
-            new _Entry(
-              indentLevel: indentLevel,
-              prefix: '$key:',
-              value: ' ${decodedJson[key]}',
-            ),
-          );
-        }
-      }
-    } else {
-      entries.add(
-        new _Entry(indentLevel: indentLevel, value: '$decodedJson'),
-      );
-    }
-  }
-}
-
-class _Entry extends StatelessWidget {
-  final int indentLevel;
-  final String prefix;
-  final String value;
-
-  const _Entry({this.indentLevel, this.prefix = '', this.value = ''});
-
-  @override
-  Widget build(BuildContext context) {
-    return new Padding(
-      padding: new EdgeInsets.only(
-        left: indentLevel * _kJsonViewerEntryIndentPerLevel,
-      ),
-      child: new Row(
-        crossAxisAlignment: CrossAxisAlignment.start,
-        mainAxisSize: MainAxisSize.min,
-        children: <Widget>[
-          new Text(prefix, style: const TextStyle(color: Colors.yellow)),
-          new Flexible(
-            child: new Text(
-              value,
-              style: new TextStyle(color: Colors.grey[100]),
-            ),
-          ),
-        ],
-      ),
-    );
-  }
-}
diff --git a/app/link_viewer/lib/src/models/link_viewer_model.dart b/app/link_viewer/lib/src/models/link_viewer_model.dart
deleted file mode 100644
index d74edf1..0000000
--- a/app/link_viewer/lib/src/models/link_viewer_model.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2018 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert' show json;
-
-import 'package:lib.app.dart/logging.dart';
-import 'package:lib.widgets.dart/model.dart';
-
-/// The model for the link viewer module.
-class LinkViewerModel extends Model {
-  /// The decoded JSON object from the Link's JSON.
-  dynamic get decodedJson => _decodedJson;
-  dynamic _decodedJson;
-  String _lastJson;
-
-  /// Called when the model receives data
-  void onData(String encoded) {
-    if (_lastJson == encoded) {
-      return;
-    }
-    _lastJson = encoded;
-
-    log.fine('JSON: $json');
-    try {
-      _decodedJson = json.decode(encoded);
-      notifyListeners();
-      //ignore: avoid_catches_without_on_clauses
-    } catch (e) {
-      log.info('Failed to decode link data: $e');
-    }
-  }
-}
diff --git a/app/link_viewer/meta/link_viewer.cmx b/app/link_viewer/meta/link_viewer.cmx
deleted file mode 100644
index dcef2e6..0000000
--- a/app/link_viewer/meta/link_viewer.cmx
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-    "program": {
-        "data": "data/link_viewer"
-    },
-    "sandbox": {
-        "services": [
-            "fuchsia.cobalt.LoggerFactory",
-            "fuchsia.fonts.Provider",
-            "fuchsia.logger.LogSink",
-            "fuchsia.modular.Clipboard",
-            "fuchsia.modular.ContextWriter",
-            "fuchsia.modular.ModuleContext",
-            "fuchsia.netstack.Netstack",
-            "fuchsia.sys.Environment",
-            "fuchsia.ui.input.ImeService",
-            "fuchsia.ui.policy.Presenter",
-            "fuchsia.ui.scenic.Scenic",
-            "fuchsia.ui.viewsv1.ViewManager",
-            "fuchsia.wlan.service.Wlan"
-        ]
-    }
-}
diff --git a/app/link_viewer/pubspec.yaml b/app/link_viewer/pubspec.yaml
deleted file mode 100644
index 3a809f4..0000000
--- a/app/link_viewer/pubspec.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Copyright 2017 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
diff --git a/packages/tools/all b/packages/tools/all
index 33f21c7..3fa8a34 100644
--- a/packages/tools/all
+++ b/packages/tools/all
@@ -3,7 +3,6 @@
         "topaz/packages/tools/dart",
         "topaz/packages/tools/doc_checker",
         "topaz/packages/tools/fidlgen_dart",
-        "topaz/packages/tools/ledger",
-        "topaz/packages/tools/link_viewer"
+        "topaz/packages/tools/ledger"
     ]
 }
diff --git a/packages/tools/link_viewer b/packages/tools/link_viewer
deleted file mode 100644
index 05db8ab..0000000
--- a/packages/tools/link_viewer
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/app/link_viewer"
-    ]
-}