You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ia...@apache.org on 2013/07/09 16:31:40 UTC

[1/2] git commit: [CB-3631] Remove Android dialog methods from vibration plugin

Updated Branches:
  refs/heads/master 4bb048de4 -> f798ef9c8


[CB-3631] Remove Android dialog methods from vibration plugin


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/commit/f798ef9c
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/tree/f798ef9c
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/diff/f798ef9c

Branch: refs/heads/master
Commit: f798ef9c85426d29fb30be584d4c146fb742d304
Parents: e8b301b
Author: Ian Clelland <ic...@chromium.org>
Authored: Mon Jul 8 22:29:32 2013 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jul 9 10:31:08 2013 -0400

----------------------------------------------------------------------
 plugin.xml                    |  11 +
 src/android/Notification.java | 448 -------------------------------------
 src/android/Vibration.java    |  78 +++++++
 www/android/notification.js   |  74 ------
 4 files changed, 89 insertions(+), 522 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/f798ef9c/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index b6fcc49..5b024d3 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -32,6 +32,17 @@
         <source-file src="src/wp/Vibration.cs" />
     </platform>
 
+    <!-- android -->
+    <platform name="android">
+        <config-file target="res/xml/config.xml" parent="/*">
+            <feature name="Vibration">
+                <param name="android-package" value="org.apache.cordova.core.Vibration"/>
+            </feature>
+        </config-file>
+
+        <source-file src="src/android/Vibration.java" target-dir="src/org/apache/cordova/core" />
+    </platform>
+
     <!-- ios -->
     <platform name="ios">
         <config-file target="config.xml" parent="/*">

http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/f798ef9c/src/android/Notification.java
----------------------------------------------------------------------
diff --git a/src/android/Notification.java b/src/android/Notification.java
deleted file mode 100755
index dd8bcd3..0000000
--- a/src/android/Notification.java
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you 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 org.apache.cordova.core;
-
-import org.apache.cordova.api.CallbackContext;
-import org.apache.cordova.api.CordovaInterface;
-import org.apache.cordova.api.CordovaPlugin;
-import org.apache.cordova.api.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import android.app.AlertDialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Vibrator;
-import android.widget.EditText;
-
-/**
- * This class provides access to notifications on the device.
- */
-public class Notification extends CordovaPlugin {
-
-    public int confirmResult = -1;
-    public ProgressDialog spinnerDialog = null;
-    public ProgressDialog progressDialog = null;
-
-    /**
-     * Constructor.
-     */
-    public Notification() {
-    }
-
-    /**
-     * Executes the request and returns PluginResult.
-     *
-     * @param action            The action to execute.
-     * @param args              JSONArray of arguments for the plugin.
-     * @param callbackContext   The callback context used when calling back into JavaScript.
-     * @return                  True when the action was valid, false otherwise.
-     */
-    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
-        if (action.equals("beep")) {
-            this.beep(args.getLong(0));
-        }
-        else if (action.equals("vibrate")) {
-            this.vibrate(args.getLong(0));
-        }
-        else if (action.equals("alert")) {
-            this.alert(args.getString(0), args.getString(1), args.getString(2), callbackContext);
-            return true;
-        }
-        else if (action.equals("confirm")) {
-            this.confirm(args.getString(0), args.getString(1), args.getJSONArray(2), callbackContext);
-            return true;
-        }
-        else if (action.equals("prompt")) {
-            this.prompt(args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), callbackContext);
-            return true;
-        }
-        else if (action.equals("activityStart")) {
-            this.activityStart(args.getString(0), args.getString(1));
-        }
-        else if (action.equals("activityStop")) {
-            this.activityStop();
-        }
-        else if (action.equals("progressStart")) {
-            this.progressStart(args.getString(0), args.getString(1));
-        }
-        else if (action.equals("progressValue")) {
-            this.progressValue(args.getInt(0));
-        }
-        else if (action.equals("progressStop")) {
-            this.progressStop();
-        }
-        else {
-            return false;
-        }
-
-        // Only alert and confirm are async.
-        callbackContext.success();
-        return true;
-    }
-
-    //--------------------------------------------------------------------------
-    // LOCAL METHODS
-    //--------------------------------------------------------------------------
-
-    /**
-     * Beep plays the default notification ringtone.
-     *
-     * @param count     Number of times to play notification
-     */
-    public void beep(long count) {
-        Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
-        Ringtone notification = RingtoneManager.getRingtone(this.cordova.getActivity().getBaseContext(), ringtone);
-
-        // If phone is not set to silent mode
-        if (notification != null) {
-            for (long i = 0; i < count; ++i) {
-                notification.play();
-                long timeout = 5000;
-                while (notification.isPlaying() && (timeout > 0)) {
-                    timeout = timeout - 100;
-                    try {
-                        Thread.sleep(100);
-                    } catch (InterruptedException e) {
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Vibrates the device for the specified amount of time.
-     *
-     * @param time      Time to vibrate in ms.
-     */
-    public void vibrate(long time) {
-        // Start the vibration, 0 defaults to half a second.
-        if (time == 0) {
-            time = 500;
-        }
-        Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
-        vibrator.vibrate(time);
-    }
-
-    /**
-     * Builds and shows a native Android alert with given Strings
-     * @param message           The message the alert should display
-     * @param title             The title of the alert
-     * @param buttonLabel       The label of the button
-     * @param callbackContext   The callback context
-     */
-    public synchronized void alert(final String message, final String title, final String buttonLabel, final CallbackContext callbackContext) {
-
-        final CordovaInterface cordova = this.cordova;
-
-        Runnable runnable = new Runnable() {
-            public void run() {
-
-                AlertDialog.Builder dlg = new AlertDialog.Builder(cordova.getActivity());
-                dlg.setMessage(message);
-                dlg.setTitle(title);
-                dlg.setCancelable(true);
-                dlg.setPositiveButton(buttonLabel,
-                        new AlertDialog.OnClickListener() {
-                            public void onClick(DialogInterface dialog, int which) {
-                                dialog.dismiss();
-                                callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
-                            }
-                        });
-                dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
-                    public void onCancel(DialogInterface dialog)
-                    {
-                        dialog.dismiss();
-                        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
-                    }
-                });
-
-                dlg.create();
-                dlg.show();
-            };
-        };
-        this.cordova.getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * Builds and shows a native Android confirm dialog with given title, message, buttons.
-     * This dialog only shows up to 3 buttons.  Any labels after that will be ignored.
-     * The index of the button pressed will be returned to the JavaScript callback identified by callbackId.
-     *
-     * @param message           The message the dialog should display
-     * @param title             The title of the dialog
-     * @param buttonLabels      A comma separated list of button labels (Up to 3 buttons)
-     * @param callbackContext   The callback context.
-     */
-    public synchronized void confirm(final String message, final String title, final JSONArray buttonLabels, final CallbackContext callbackContext) {
-
-        final CordovaInterface cordova = this.cordova;
-
-        Runnable runnable = new Runnable() {
-            public void run() {
-                AlertDialog.Builder dlg = new AlertDialog.Builder(cordova.getActivity());
-                dlg.setMessage(message);
-                dlg.setTitle(title);
-                dlg.setCancelable(true);
-
-                // First button
-                if (buttonLabels.length() > 0) {
-                    try {
-                        dlg.setNegativeButton(buttonLabels.getString(0),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dialog.dismiss();
-                                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 1));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-
-                // Second button
-                if (buttonLabels.length() > 1) {
-                    try {
-                        dlg.setNeutralButton(buttonLabels.getString(1),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dialog.dismiss();
-                                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 2));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-
-                // Third button
-                if (buttonLabels.length() > 2) {
-                    try {
-                        dlg.setPositiveButton(buttonLabels.getString(2),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                  dialog.dismiss();
-                                  callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 3));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-                dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
-                    public void onCancel(DialogInterface dialog)
-                    {
-                        dialog.dismiss();
-                        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
-                    }
-                });
-
-                dlg.create();
-                dlg.show();
-            };
-        };
-        this.cordova.getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * Builds and shows a native Android prompt dialog with given title, message, buttons.
-     * This dialog only shows up to 3 buttons.  Any labels after that will be ignored.
-     * The following results are returned to the JavaScript callback identified by callbackId:
-     *     buttonIndex			Index number of the button selected
-     *     input1				The text entered in the prompt dialog box
-     *
-     * @param message           The message the dialog should display
-     * @param title             The title of the dialog
-     * @param buttonLabels      A comma separated list of button labels (Up to 3 buttons)
-     * @param callbackContext   The callback context.
-     */
-    public synchronized void prompt(final String message, final String title, final JSONArray buttonLabels, final String defaultText, final CallbackContext callbackContext) {
-    	
-        final CordovaInterface cordova = this.cordova;
-        final EditText promptInput =  new EditText(cordova.getActivity());
-        promptInput.setHint(defaultText);
-       
-        Runnable runnable = new Runnable() {
-            public void run() {
-                AlertDialog.Builder dlg = new AlertDialog.Builder(cordova.getActivity());
-                dlg.setMessage(message);
-                dlg.setTitle(title);
-                dlg.setCancelable(true);
-                
-                dlg.setView(promptInput);
-                
-                final JSONObject result = new JSONObject();
-                
-                // First button
-                if (buttonLabels.length() > 0) {
-                    try {
-                        dlg.setNegativeButton(buttonLabels.getString(0),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dialog.dismiss();
-                                    try {
-                                        result.put("buttonIndex",1);
-                                        result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());											
-                                    } catch (JSONException e) { e.printStackTrace(); }
-                                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-
-                // Second button
-                if (buttonLabels.length() > 1) {
-                    try {
-                        dlg.setNeutralButton(buttonLabels.getString(1),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dialog.dismiss();
-                                    try {
-                                        result.put("buttonIndex",2);
-                                        result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
-                                    } catch (JSONException e) { e.printStackTrace(); }
-                                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-
-                // Third button
-                if (buttonLabels.length() > 2) {
-                    try {
-                        dlg.setPositiveButton(buttonLabels.getString(2),
-                            new AlertDialog.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dialog.dismiss();
-                                    try {
-                                        result.put("buttonIndex",3);
-                                        result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
-                                    } catch (JSONException e) { e.printStackTrace(); }
-                                    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
-                                }
-                            });
-                    } catch (JSONException e) { }
-                }
-                dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
-                    public void onCancel(DialogInterface dialog){
-                        dialog.dismiss();
-                        try {
-                            result.put("buttonIndex",0);
-                            result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
-                        } catch (JSONException e) { e.printStackTrace(); }
-                        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
-                    }
-                });
-
-                dlg.create();
-                dlg.show();
-
-            };
-        };
-        this.cordova.getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * Show the spinner.
-     *
-     * @param title     Title of the dialog
-     * @param message   The message of the dialog
-     */
-    public synchronized void activityStart(final String title, final String message) {
-        if (this.spinnerDialog != null) {
-            this.spinnerDialog.dismiss();
-            this.spinnerDialog = null;
-        }
-        final CordovaInterface cordova = this.cordova;
-        Runnable runnable = new Runnable() {
-            public void run() {
-                Notification.this.spinnerDialog = ProgressDialog.show(cordova.getActivity(), title, message, true, true,
-                        new DialogInterface.OnCancelListener() {
-                            public void onCancel(DialogInterface dialog) {
-                                Notification.this.spinnerDialog = null;
-                            }
-                        });
-            }
-        };
-        this.cordova.getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * Stop spinner.
-     */
-    public synchronized void activityStop() {
-        if (this.spinnerDialog != null) {
-            this.spinnerDialog.dismiss();
-            this.spinnerDialog = null;
-        }
-    }
-
-    /**
-     * Show the progress dialog.
-     *
-     * @param title     Title of the dialog
-     * @param message   The message of the dialog
-     */
-    public synchronized void progressStart(final String title, final String message) {
-        if (this.progressDialog != null) {
-            this.progressDialog.dismiss();
-            this.progressDialog = null;
-        }
-        final Notification notification = this;
-        final CordovaInterface cordova = this.cordova;
-        Runnable runnable = new Runnable() {
-            public void run() {
-                notification.progressDialog = new ProgressDialog(cordova.getActivity());
-                notification.progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
-                notification.progressDialog.setTitle(title);
-                notification.progressDialog.setMessage(message);
-                notification.progressDialog.setCancelable(true);
-                notification.progressDialog.setMax(100);
-                notification.progressDialog.setProgress(0);
-                notification.progressDialog.setOnCancelListener(
-                        new DialogInterface.OnCancelListener() {
-                            public void onCancel(DialogInterface dialog) {
-                                notification.progressDialog = null;
-                            }
-                        });
-                notification.progressDialog.show();
-            }
-        };
-        this.cordova.getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * Set value of progress bar.
-     *
-     * @param value     0-100
-     */
-    public synchronized void progressValue(int value) {
-        if (this.progressDialog != null) {
-            this.progressDialog.setProgress(value);
-        }
-    }
-
-    /**
-     * Stop progress dialog.
-     */
-    public synchronized void progressStop() {
-        if (this.progressDialog != null) {
-            this.progressDialog.dismiss();
-            this.progressDialog = null;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/f798ef9c/src/android/Vibration.java
----------------------------------------------------------------------
diff --git a/src/android/Vibration.java b/src/android/Vibration.java
new file mode 100755
index 0000000..3b26a60
--- /dev/null
+++ b/src/android/Vibration.java
@@ -0,0 +1,78 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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 org.apache.cordova.core;
+
+import org.apache.cordova.api.CallbackContext;
+import org.apache.cordova.api.CordovaPlugin;
+import org.apache.cordova.api.PluginResult;
+import org.json.JSONArray;
+import org.json.JSONException;
+import android.content.Context;
+import android.os.Vibrator;
+
+/**
+ * This class provides access to vibration on the device.
+ */
+public class Vibration extends CordovaPlugin {
+
+    /**
+     * Constructor.
+     */
+    public Vibration() {
+    }
+
+    /**
+     * Executes the request and returns PluginResult.
+     *
+     * @param action            The action to execute.
+     * @param args              JSONArray of arguments for the plugin.
+     * @param callbackContext   The callback context used when calling back into JavaScript.
+     * @return                  True when the action was valid, false otherwise.
+     */
+    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+        if (action.equals("vibrate")) {
+            this.vibrate(args.getLong(0));
+        }
+        else {
+            return false;
+        }
+
+        // Only alert and confirm are async.
+        callbackContext.success();
+        return true;
+    }
+
+    //--------------------------------------------------------------------------
+    // LOCAL METHODS
+    //--------------------------------------------------------------------------
+
+    /**
+     * Vibrates the device for the specified amount of time.
+     *
+     * @param time      Time to vibrate in ms.
+     */
+    public void vibrate(long time) {
+        // Start the vibration, 0 defaults to half a second.
+        if (time == 0) {
+            time = 500;
+        }
+        Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
+        vibrator.vibrate(time);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/f798ef9c/www/android/notification.js
----------------------------------------------------------------------
diff --git a/www/android/notification.js b/www/android/notification.js
deleted file mode 100644
index 8936a5c..0000000
--- a/www/android/notification.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-var exec = require('cordova/exec');
-
-/**
- * Provides Android enhanced notification API.
- */
-module.exports = {
-    activityStart : function(title, message) {
-        // If title and message not specified then mimic Android behavior of
-        // using default strings.
-        if (typeof title === "undefined" && typeof message == "undefined") {
-            title = "Busy";
-            message = 'Please wait...';
-        }
-
-        exec(null, null, 'Notification', 'activityStart', [ title, message ]);
-    },
-
-    /**
-     * Close an activity dialog
-     */
-    activityStop : function() {
-        exec(null, null, 'Notification', 'activityStop', []);
-    },
-
-    /**
-     * Display a progress dialog with progress bar that goes from 0 to 100.
-     *
-     * @param {String}
-     *            title Title of the progress dialog.
-     * @param {String}
-     *            message Message to display in the dialog.
-     */
-    progressStart : function(title, message) {
-        exec(null, null, 'Notification', 'progressStart', [ title, message ]);
-    },
-
-    /**
-     * Close the progress dialog.
-     */
-    progressStop : function() {
-        exec(null, null, 'Notification', 'progressStop', []);
-    },
-
-    /**
-     * Set the progress dialog value.
-     *
-     * @param {Number}
-     *            value 0-100
-     */
-    progressValue : function(value) {
-        exec(null, null, 'Notification', 'progressValue', [ value ]);
-    }
-};


[2/2] git commit: [CB-3631] Fix native module name in JS

Posted by ia...@apache.org.
[CB-3631] Fix native module name in JS


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/commit/e8b301b2
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/tree/e8b301b2
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/diff/e8b301b2

Branch: refs/heads/master
Commit: e8b301b27658823593fe71ad2084cbadfe7e12e3
Parents: 4bb048d
Author: Ian Clelland <ic...@chromium.org>
Authored: Tue Jul 9 10:30:57 2013 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Tue Jul 9 10:31:08 2013 -0400

----------------------------------------------------------------------
 www/vibration.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/e8b301b2/www/vibration.js
----------------------------------------------------------------------
diff --git a/www/vibration.js b/www/vibration.js
index d55d76b..62ef521 100644
--- a/www/vibration.js
+++ b/www/vibration.js
@@ -33,6 +33,6 @@ module.exports = {
      * @param {Integer} mills       The number of milliseconds to vibrate for.
      */
     vibrate: function(mills) {
-        exec(null, null, "Notification", "vibrate", [mills]);
+        exec(null, null, "Vibration", "vibrate", [mills]);
     },
 };