diff --git a/bin/template/cordova/browser_handler.js b/bin/template/cordova/browser_handler.js
index 6e732c7..3e12c25 100644
--- a/bin/template/cordova/browser_handler.js
+++ b/bin/template/cordova/browser_handler.js
@@ -115,12 +115,13 @@
     asset: {
         install: function (asset, plugin_dir, wwwDest) {
             var src = path.join(plugin_dir, asset.src);
-            if (fs.statSync(src).isDirectory()) {
-                src = path.join(src, '*');
-            }
             var dest = path.join(wwwDest, asset.target);
 
-            shell.cp('-rf', src, dest);
+            if (fs.statSync(src).isDirectory()) {
+                shell.cp('-Rf', src + '/*', dest);
+            } else {
+                shell.cp('-f', src, dest);
+            }
         },
         uninstall: function (asset, wwwDest, plugin_id) {
             shell.rm('-rf', path.join(wwwDest, asset.target));
diff --git a/spec/browser_handler.spec.js b/spec/browser_handler.spec.js
new file mode 100644
index 0000000..70a0682
--- /dev/null
+++ b/spec/browser_handler.spec.js
@@ -0,0 +1,54 @@
+/**
+    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 browser_handler = require('../bin/template/cordova/browser_handler');
+var shell = require('shelljs');
+var fs = require('fs');
+var path = require('path');
+
+describe('Asset install tests', function () {
+    var fsstatMock;
+    var asset = { itemType: 'asset', src: 'someSrc/ServiceWorker.js', target: 'ServiceWorker.js' };
+    var plugin_dir = 'pluginDir';
+    var wwwDest = 'dest';
+    var cpPath = path.join(plugin_dir, asset.src);
+
+    it('if src is a directory, should be called with cp, -Rf', function () {
+        var cp = spyOn(shell, 'cp').and.returnValue('-Rf');
+        fsstatMock = {
+            isDirectory: function () {
+                return true;
+            }
+        };
+        spyOn(fs, 'statSync').and.returnValue(fsstatMock);
+        browser_handler.asset.install(asset, plugin_dir, wwwDest);
+        expect(cp).toHaveBeenCalledWith('-Rf', jasmine.any(String), path.join('dest', asset.target));
+    });
+    it('if src is not a directory, should be called with cp, -f', function () {
+        var cp = spyOn(shell, 'cp').and.returnValue('-f');
+        fsstatMock = {
+            isDirectory: function () {
+                return false;
+            }
+        };
+        spyOn(fs, 'statSync').and.returnValue(fsstatMock);
+        browser_handler.asset.install(asset, plugin_dir, wwwDest);
+        expect(cp).toHaveBeenCalledWith('-f', cpPath, path.join('dest', asset.target));
+    });
+});
