Discover great apps, games, extensions and themes for Google Chrome. That'll give you a spiffy icon for it in your Chrome OS app drawer. Alternatively, you can just open any web page you want, click the three-dot menu icon in Chrome's upper-right corner, and then. Web developer tools make it easy to test web apps on Chrome, which means strong compatibility with the latest sites and tech standards Support by nearly every device and operating system, including Windows and Apple products, whereas Safari is only available in iOS and macOS.
Important: Chrome will be removing support for Chrome Apps on all platforms. How to run app mac with command line arguments. Chrome browser and the Chrome Web Store will continue to support extensions. Read the announcement and learn more about migrating your app.
If you're using Chrome, chances are it's linked to your phone or other personal device with the app and you may be getting notifications from a website across those platforms. Begin by going to the download page for Chrome on the Mac you want to install it on. (Ironically, you.
This document describes how to use the USB API to communicatewith USB devices. Some devices are not accessible through the USB API(see the Caveats section below for details).Chrome Apps can also connect to serial andBluetooth devices.
Samples: For examples that illustrate how Chrome Apps can connect to hardware devices, see theserial,servo, andusb samples.
For background information about USB, see the official USB specifications.
USB in a NutShell is a reasonable crash course that you may find helpful.
USB in a NutShell is a reasonable crash course that you may find helpful.
Manifest requirement
The USB API requires the 'usb' permission in the manifest file:
In addition, in order to prevent finger-printing, you must declare all the device types you want to access in the manifest file. Each type of USB device corresponds to a vendor id/product id (VID/PID) pair. You can use usb.getDevices to enumerate devices by their VID/PID pair.
You must declare the VID/PID pairs for each type of device you want to use under the
usbDevices
permission in your app's manifest file, as shown in the example below:Note that only decimal numbers are allowed in JSON format. You cannot use hexadecimal numbers in these fields.
Since Chrome 57, the requirement for declaring all the device types in the app manifest is relaxed for apps running as Chrome OS kiosk apps. For kiosk apps, you can use the
interfaceClass
permission property to request permission to access USB devices that: - implement a USB interface of a specific interface class
- have a specific USB device class
usbDevices
permission would grant an app access to all USB devices that implement a printer interface (interface class code 7), and to USB hub devices (device class code 9):For the list of acceptable
interfaceClass
values, see USB Class Codes. How to reinstall contacts app on mac. The
interfaceClass
property can be combined with the vendorId
property to get access only to USB devices from a specific vendor, as demonstrated by the following example:Note that
usbDevices
permissions with interfaceClass
property have effect only when the app is running in kiosk session - outside a kiosk session these permissions will be ignored. Finding a device
To determine whether one or more specific devices are connected to a user's system, use the usb.getDevices method:
Parameter (type) | Description |
---|---|
EnumerateDevicesOptions (object) | An object specifying both a vendorId (long) and productId (long) used to find the correct type of device on the bus. Your manifest must declare the usbDevices permission section listing all the vendorId and deviceId pairs your app wants to access. |
callback (function) | Called when the device enumeration is finished. The callback will be executed with one parameter, an array of Device objects with three properties: device , vendorId , productId . The device property is a stable identifier for a connected device. It will not change until the device is unplugged. The detail of the identifier is opaque and subject to change. Do not rely on its current type. If no devices are found, the array will be empty. |
Example:
Opening a device
Once the
Device
objects are returned, you can open a device usingusb.openDevice to obtain a connection handle. You can onlycommunicate with USB devices using connection handles.Property | Description |
---|---|
device | Object received in usb.getDevices callback. |
data (arraybuffer) | Contains the data sent by the device if the transfer was inbound. |
Example:
Not every device can be opened successfully. In general, operating systemslock down many types of USB interfaces (e.g. keyboards and mice, mass storagedevices, webcams, etc.) and they cannot be claimed by user applications.On Linux (other than Chrome OS), once an interface of a device is locked down bythe OS, the whole device is locked down (because all the interfaces shares thesame device file), even if the other interfaces of the device can be used intheory. On Chrome OS, you can request access to unlocked interfaces using theusb.requestAccess method. If permitted, the permission broker willunlock the device file for you.
To simplify the opening process, you can use the usb.findDevicesmethod, which enumerates, requests access, and opens devices in one call:
which is equivalent to:
USB transfers and receiving data from a device
The USB protocol defines four types of transfers: control, bulk, isochronous and interrupt. These transfers are described below.
Transfers can occur in both directions: device-to-host (inbound), and host-to-device (outbound). Due to the nature of the USB protocol, both inbound and outbound messages must be initiated by the host (the computer that runs the Chrome app). For inbound (device-to-host) messages, the host (initiated by your JavaScript code) sends a message flagged as 'inbound' to the device. The details of the message depend on the device, but usually will have some identification of what you are requesting from it. The device then responds with the requested data. The device's response is handled by Chrome and delivered asynchronously to the callback you specify in the transfer method. An outbound (host-to-device) message is similar, but the response doesn't contain data returned from the device.
For each message from the device, the specified callback will receive an event object with the following properties:
Property | Description |
---|---|
resultCode (integer) | 0 is success; other values indicate failure. An error string can be read from chrome.extension.lastError when a failure isindicated. |
data (arraybuffer) | Contains the data sent by the device if the transfer was inbound. |
Example:
CONTROL transfers
Control transfers are generally used to send or receive configuration or command parameters to a USB device. The controlTransfer method always sends to/reads from endpoint 0, and no claimInterface is required. The method is simple and receives three parameters:
Parameter (types) | Description |
---|---|
connectionHandle | Object received in usb.openDevice callback. |
transferInfo | Parameter object with values from the table below. Check your USB device protocol specification for details. |
transferCallback() | Invoked when the transfer has completed. |
Values for
transferInfo
object:Value | Description |
---|---|
requestType (string) | 'vendor', 'standard', 'class' or 'reserved'. |
recipient (string) | 'device', 'interface', 'endpoint' or 'other'. |
direction (string) | 'in' or 'out'. The 'in' direction is used to notify the device that it should send information to the host. All communication on a USB bus is host-initiated, so use an 'in' transfer to allow a device to send information back. |
request (integer) | Defined by your device's protocol. |
value (integer) | Defined by your device's protocol. |
index (integer) | Defined by your device's protocol. |
length (integer) | Only used when direction is 'in'. Notifies the device that this is the amount of data the host is expecting in response. |
data (arraybuffer) | Defined by your device's protocol, required when direction is 'out'. |
Example:
ISOCHRONOUS transfers
Isochronous transfers are the most complex type of USB transfer. They are commonly used for streams of data, like video and sound. To initiate an isochronous transfer (either inbound or outbound), you must use the usb.isochronousTransfer method:
Parameter | Description |
---|---|
connectionHandle | Object received in usb.openDevice callback. |
isochronousTransferInfo | Parameter object with the values in the table below. |
transferCallback() | Invoked when the transfer has completed. |
Values for
isochronousTransferInfo
object:Value | Description |
---|---|
transferInfo (object) | An object with the following attributes: direction (string): 'in' or 'out'. endpoint (integer): defined by your device. Usually can be found by looking at an USB instrospection tool, like lsusb -v length (integer): only used when direction is 'in'. Notifies the device that this is the amount of data the host is expecting in response. Should be AT LEAST packets × packetLength . data (arraybuffer): defined by your device's protocol; only used when direction is 'out'. |
packets (integer) | Total number of packets expected in this transfer. |
packetLength (integer) | Expected length of each packet in this transfer. |
Example:
Notes: One isochronous transfer will contain
If you are expecting a stream of data from the device, remember that you will have to send one 'inbound' transfer for each transfer you expect back. USB devices don't send transfers to the USB bus unless the host explicitly requests them through 'inbound' transfers.
isoTransferInfo.packets
packets of isoTransferInfo.packetLength
bytes. If it is an inbound transfer (your code requested data from the device), the data
field in the onUsbEvent will be an ArrayBuffer of size transferInfo.length
. It is your duty to walk through this ArrayBuffer and extract the different packets, each starting at a multiple of isoTransferInfo.packetLength
bytes. If you are expecting a stream of data from the device, remember that you will have to send one 'inbound' transfer for each transfer you expect back. USB devices don't send transfers to the USB bus unless the host explicitly requests them through 'inbound' transfers.
BULK transfers
Bulk transfers are commonly used to transfer a large amount of non-time-sensitive data in a reliable way. usb.bulkTransfer has three parameters:
Parameter | Description |
---|---|
connectionHandle | Object received in usb.openDevice callback. |
transferInfo | Parameter object with the values in the table below. |
transferCallback | Invoked when the transfer has completed. |
Values for
transferInfo
object:Value | Description |
---|---|
direction (string) | 'in' or 'out'. |
endpoint (integer) | Defined by your device's protocol. |
length (integer) | Only used when direction is 'in'. Notifies the device that this is the amount of data the host is expecting in response. |
data (ArrayBuffer) | Defined by your device's protocol; only used when direction is 'out'. |
Example:
INTERRUPT transfers
Interrupt transfers are used to small amount of time sensitive data. Since all USB communication is initiated by the host, host code usually polls the device periodically, sending interrupt IN transfers that will make the device send data back if there is anything in the interrupt queue (maintained by the device). usb.interruptTransfer has three parameters:
Parameter | Description |
---|---|
connectionHandle | Object received in usb.openDevice callback. |
transferInfo | Parameter object with the values in the table below. |
transferCallback | Invoked when the transfer has completed. Notice that this callback doesn't contain the device's response. The purpose of the callback is simply to notify your code that the asynchronous transfer requests has been processed. |
Values for
transferInfo
object:Value | Description |
---|---|
direction (string) | 'in' or 'out'. |
endpoint (integer) | Defined by your device's protocol. |
length (integer) | Only used when direction is 'in'. Notifies the device that this is the amount of data the host is expecting in response. |
data (ArrayBuffer) | Defined by your device's protocol; only used when direction is 'out'. |
Example:
Caveats
Not all devices can be accessed through the USB API. In general, devices are not accessible because either the Operating System's kernel or a native driver holds them off from user space code. Some examples are devices with HID profiles on OSX systems, and USB pen drives.
On most Linux systems, USB devices are mapped with read-only permissions by default. To open a device through this API, your user will need to have write access to it too. A simple solution is to set a udev rule. Create a file
/etc/udev/rules.d/50-yourdevicename.rules
with the following content: Then, just restart the udev daemon:
service udev restart
. You can check if device permissions are set correctly by following these steps:- Run
lsusb
to find the bus and device numbers. - Run
ls -al /dev/bus/usb/[bus]/[device]
. This file should be owned by group 'plugdev' and have group write permissions.
Your app cannot do this automatically since this this procedure requires rootaccess. We recommend that you provide instructions to end-users and link to theCaveats section on this page for an explanation.
On Chrome OS, simply call usb.requestAccess. The permission broker does this for you. Delete app from macbook pro.
Google Chrome is the most widely used web browser in the world. Users enjoy its fast loading speed, cross-device integration, and tabbed browsing. Google Chrome does not come installed as a standard on new Macs or PCs. Their native web browsers (Safari and Microsoft Edge, respectively) are automatically installed, forcing users to install Chrome themselves.
Seamless internet navigation
Chrome Web App Mac Ios
Chrome is an ideal browser to enjoy easy, coordinated online browsing across various devices.
Whether you have a new Mac or an older one, Google Chrome sets the bar high for web browsers. You want a browser that is safe, easy to use, syncs data and content across all your devices, and operates quickly. Google Chrome is the solution that over 63% of the world turns to and with good reason. Mac users have distinguished taste and as such, expect high quality in their hardware and software products. Google Chrome delivers this to Mac users with its low CPU usage, reliability, and overall browsing experience. It delivers a high-quality browsing experience to Mac users with its low CPU usage, reliability, tabbed browsing, cross-device syncing, and lighting fast loading speed.
Google Chrome for Mac has a laundry list of features, earning its spot as the top web browser of choice for both Mac and PC users. It offers thousands of extensions, available through the Chrome web store, providing Mac owners with even more functionality. Adobe Flash is also available when you install Chrome on your Mac. The overall appearance is professional and clean. Enjoy customized browser preferences including your homepage of choice, sync and Google services, Chrome name and picture, importing bookmarks and settings, autofill capabilities (passwords, payments, addresses, etc.), toolbars, font, page zoom, and startup settings. Chrome’s user interface is incredibly easy to navigate. Multi-tasking just got easier with tabbed browsing, which not only helps productivity, but looks clean and organized. Since Chrome can be downloaded on all of your devices (computers, phones, tablets), if you open a browser or perform a search on one device, Chrome will auto-sync that work stream on your other devices. If you look up a dinner recipe at work on your Mac but need the ingredient list at the grocery store? No problem - pull up the same tab within Chrome on your iPhone. Once you are home and ready to start cooking, just pull up the same Chrome recipe tab on your tablet. With the world moving faster than ever before, functionality like this can help make life a little easier.
Chrome’s password, contact information, and payment autofill capabilities are revolutionizing users’ online experience. Upon your consent, Chrome’s autofill feature will easily fill out your name, address, phone number, email address, passwords, and payment information. If it’s time to register your child for the soccer season but your wallet is downstairs, Google Chrome has your back, helping you easily fill in the data, so you can stay in your comfy chair. Chrome will only sync this data on your approved devices, so you can rest easy that your information is safe. CPU usage is immensely important when choosing a web browser. Keep your Mac’s CPU free by browsing with Google Chrome, maximizing overall system performance. Chrome for Mac is currently available in 47 languages. It can only be installed on Intel Macs, currently limiting its userbase. Mac users can manage how their browsing history is used to personalize search, ads, and more by navigating to their 'Sync Settings' within Chrome. Encryption options, auto-completion of searches and URLs, similar page suggestions, safe browsing, and enhanced spell check are also available within the settings tab, helping users feel more in control of their browsing experience. Users also have the option to 'help improve Chrome' by automatically sending usage statistics, crash reports, visited URLs, and system information to Google, or can easily opt out within Chrome’s settings.
Google Chrome for Mac has a laundry list of features, earning its spot as the top web browser of choice for both Mac and PC users. It offers thousands of extensions, available through the Chrome web store, providing Mac owners with even more functionality. Adobe Flash is also available when you install Chrome on your Mac. The overall appearance is professional and clean. Enjoy customized browser preferences including your homepage of choice, sync and Google services, Chrome name and picture, importing bookmarks and settings, autofill capabilities (passwords, payments, addresses, etc.), toolbars, font, page zoom, and startup settings. Chrome’s user interface is incredibly easy to navigate. Multi-tasking just got easier with tabbed browsing, which not only helps productivity, but looks clean and organized. Since Chrome can be downloaded on all of your devices (computers, phones, tablets), if you open a browser or perform a search on one device, Chrome will auto-sync that work stream on your other devices. If you look up a dinner recipe at work on your Mac but need the ingredient list at the grocery store? No problem - pull up the same tab within Chrome on your iPhone. Once you are home and ready to start cooking, just pull up the same Chrome recipe tab on your tablet. With the world moving faster than ever before, functionality like this can help make life a little easier.
Chrome’s password, contact information, and payment autofill capabilities are revolutionizing users’ online experience. Upon your consent, Chrome’s autofill feature will easily fill out your name, address, phone number, email address, passwords, and payment information. If it’s time to register your child for the soccer season but your wallet is downstairs, Google Chrome has your back, helping you easily fill in the data, so you can stay in your comfy chair. Chrome will only sync this data on your approved devices, so you can rest easy that your information is safe. CPU usage is immensely important when choosing a web browser. Keep your Mac’s CPU free by browsing with Google Chrome, maximizing overall system performance. Chrome for Mac is currently available in 47 languages. It can only be installed on Intel Macs, currently limiting its userbase. Mac users can manage how their browsing history is used to personalize search, ads, and more by navigating to their 'Sync Settings' within Chrome. Encryption options, auto-completion of searches and URLs, similar page suggestions, safe browsing, and enhanced spell check are also available within the settings tab, helping users feel more in control of their browsing experience. Users also have the option to 'help improve Chrome' by automatically sending usage statistics, crash reports, visited URLs, and system information to Google, or can easily opt out within Chrome’s settings.
Where can you run this program?
Google Chrome is available on MacOS X Yosemite 10.10 or later, Windows 7 or later, Android, and iOS devices. Chrome may successfully install on devices with lesser system requirements; however, Google only provides support on a system meeting the minimum system requirements.
Is there a better alternative?
For Mac users, Safari is the standard out-of-the-box browser installed on new devices. Most users prefer a web browser with better functionality than Safari. Chrome is harder on a Mac’s battery life than Apple’s native Safari browser. However, Chrome comes out ahead of Safari in terms of browsing speed, extensions, and video loading capabilities. Safari does have many of Chrome’s features such as tab syncing across devices and auto-filling based on previous searches. Mozilla Firefox is another commonly used web browser among Mac users, though its memory usage knocks it down on the list of competitors. The main draw to Mozilla Firefox over Chrome is that because Firefox is open source, nothing fishy is going on behind the scenes. Google is notorious for capturing and using data which rightfully makes people uncomfortable.
Our take
Mac users tend to do things their own way. You’ve opted for the non-mainstream computer hardware, so using the native installed Safari browser seems in character. Safari’s minimalist look draws Mac users in as well. Google Chrome is much more 'going along with the crowd'. Putting that aside, Mac owners should dig into what they really use their web browsers for, and determine if data privacy or features is more important to them. Better yet, why not have two browsers?
Chrome Browser For Mac Download
Should you download it?
Yes. For Mac users, Google Chrome’s quick speed and helpful features makes it an excellent web browser choice. Google’s controversial collection of personal and usage data is sure to make some pause on whether to install Chrome or not. However, if you are comfortable or indifferent to Google’s data collection, go for it; the browser's overall functionality is impressive.
Chrome Web App Manifest
75.0.3770.100