diff --git a/services/vsync/BUILD.gn b/services/vsync/BUILD.gn
deleted file mode 100644
index fa46639..0000000
--- a/services/vsync/BUILD.gn
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2015 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.
-
-import("//build/config/android/config.gni")
-import("//build/config/android/rules.gni")
-
-android_library("vsync") {
-  java_files = [ "src/org/chromium/mojo/vsync/VSyncProviderImpl.java" ]
-
-  deps = [
-    "//mojo/public/java:bindings",
-    "//mojo/public/java:system",
-    "//mojo/services/vsync/interfaces:interfaces_java",
-  ]
-}
diff --git a/services/vsync/src/org/chromium/mojo/vsync/VSyncProviderImpl.java b/services/vsync/src/org/chromium/mojo/vsync/VSyncProviderImpl.java
deleted file mode 100644
index 3c8cc11..0000000
--- a/services/vsync/src/org/chromium/mojo/vsync/VSyncProviderImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2015 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.mojo.vsync;
-
-import android.view.Choreographer;
-
-import org.chromium.mojo.system.MojoException;
-import org.chromium.mojom.vsync.VSyncProvider;
-
-/**
- * Android implementation of VSyncProvider.
- */
-public class VSyncProviderImpl implements VSyncProvider, Choreographer.FrameCallback {
-    private final Choreographer mChoreographer;
-    private AwaitVSyncResponse mCallback;
-    private Binding mBinding = null;
-
-    public VSyncProviderImpl() {
-        mChoreographer = Choreographer.getInstance();
-    }
-
-    public void setBinding(Binding binding) {
-        if (mBinding != null) {
-            mBinding.unbind().close();
-        }
-        mBinding = binding;
-    }
-
-    @Override
-    public void close() {}
-
-    @Override
-    public void onConnectionError(MojoException e) {}
-
-    @Override
-    public void awaitVSync(final AwaitVSyncResponse callback) {
-        if (mCallback != null) {
-            setBinding(null);
-            return;
-        }
-        mCallback = callback;
-        mChoreographer.postFrameCallback(this);
-    }
-
-    @Override
-    public void doFrame(final long frameTimeNanos) {
-        mCallback.call(frameTimeNanos / 1000);
-        mCallback = null;
-    }
-}
diff --git a/shell/BUILD.gn b/shell/BUILD.gn
index 028ab49..f18d61d 100644
--- a/shell/BUILD.gn
+++ b/shell/BUILD.gn
@@ -360,7 +360,6 @@
       "android/apk/src/org/chromium/mojo/shell/SharingApplicationDelegate.java",
       "android/apk/src/org/chromium/mojo/shell/ShellService.java",
       "android/apk/src/org/chromium/mojo/shell/ViewportActivity.java",
-      "android/apk/src/org/chromium/mojo/shell/VsyncFactory.java",
     ]
 
     deps = [
@@ -375,7 +374,6 @@
       "//mojo/services/input/interfaces:interfaces_java",
       "//mojo/services/keyboard/interfaces:interfaces_java",
       "//mojo/services/nfc/interfaces:interfaces_java",
-      "//mojo/services/vsync/interfaces:interfaces_java",
       "//services/android",
       "//services/authentication",
       "//services/input",
@@ -386,7 +384,6 @@
       "//services/native_viewport:native_viewport_java",
       "//services/nfc_message_sink:bindings_java",
       "//services/sharing_sink:bindings_java",
-      "//services/vsync",
       "//third_party/android_tools:android_support_v13_java",
       "//ui/gl:gl_java",
     ]
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java b/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
index 5a7ef8e..1c33677 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
@@ -105,9 +105,6 @@
                 "mojo:native_viewport_support", new NativeViewportSupportApplicationDelegate());
         registry.registerApplicationDelegate("mojo:nfc", new NfcApplicationDelegate());
         registry.registerApplicationDelegate("mojo:sharing", new SharingApplicationDelegate());
-        registry.registerApplicationDelegate(
-                "mojo:vsync", new ServiceProviderFactoryApplicationDelegate(
-                                      new VsyncFactory(registry.mHandlerThread.getLooper())));
         return registry;
     }
 
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/VsyncFactory.java b/shell/android/apk/src/org/chromium/mojo/shell/VsyncFactory.java
deleted file mode 100644
index c050af3..0000000
--- a/shell/android/apk/src/org/chromium/mojo/shell/VsyncFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2015 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.mojo.shell;
-
-import android.os.Handler;
-import android.os.Looper;
-
-import org.chromium.mojo.application.ServiceFactoryBinder;
-import org.chromium.mojo.bindings.InterfaceRequest;
-import org.chromium.mojo.vsync.VSyncProviderImpl;
-import org.chromium.mojom.vsync.VSyncProvider;
-
-/**
- * A ServiceFactoryBinder for the vsync service.
- */
-final class VsyncFactory implements ServiceFactoryBinder<VSyncProvider> {
-    private final Handler mHandler;
-
-    public VsyncFactory(Looper looper) {
-        mHandler = new Handler(looper);
-    }
-
-    @Override
-    public void bind(final InterfaceRequest<VSyncProvider> request) {
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                VSyncProviderImpl implementation = new VSyncProviderImpl();
-                implementation.setBinding(VSyncProvider.MANAGER.bind(implementation, request));
-            }
-        });
-    }
-
-    @Override
-    public String getInterfaceName() {
-        return VSyncProvider.MANAGER.getName();
-    }
-}
