Let's take the example of the camera application of Firefox OS. Let's think of a high-level view of what happens when we take a picture in Firefox OS's ecosystem. We open the Camera application, which is a part of Gaia. Gaia makes use of the Camera API, which is implemented in Gecko to run the application, as Gecko is the rendering engine for the operating system. Gecko then passes the requests to Gonk, which interfaces with the hardware. Gonk sends a low-level request to the chip that activates the camera and actually takes a picture.
Note
Note that the flow of control here goes from the highest layer in the abstraction layer to the lowest layer of the OS, and then finally to the mobile hardware.
All these types of access to the hardware are provided to the developer via the WebAPIs, so you don't actually have to think of or concern yourself with what lies under the hood. It feels great to drive a car, but having abstract knowledge of what actually lies under the hood can always prove to be useful.
In the preceding illustration, the purple line from Command to Action denotes the flow of control from the highest to the lowest abstraction level, and finally to the hardware.