Web browser for spoofing supported features

Emulating a supported web browser feature when a webpage is merely testing for web browser support of various features. Frequently a web page may test for support of various features of a web browser. The present technology prevents the unnecessary and premature initiation of supported features saving a user time from having to authorize its use, in addition to saving the valuable system resources (e.g. memory, power, etc.) before the supported features are actually needed by the webpage. By emulating or spoofing support of various features of a web browser, the user of a computing device can be spared authorizing use of the various features, and spared the extra power consumption of initializing the various features that may not be used.

TECHNICAL FIELD

The present technology pertains to web browsers, and more specifically pertains to web browsers with supported features.

BACKGROUND

In recent years, web browsers have become more capable of handling complex webpages. Whether the browsers utilize extensions such as players like Adobe Flash @ player, and virtual machines like Java®, or have access to system level resources through HTML5 and Web 2.0 technologies, browsers are now capable of interpreting and rendering complex webpages. Some such webpages interpret and render complex offerings such as games displaying virtual 3-D, similar to those that were only available through specialized gaming consoles not long ago.

In support of such enhanced web, content several technologies have developed including new coding languages, and application programming interfaces, which make it easier to develop such enhanced web content. However, new features are added at a rapid pace, and not all Internet browsers support all features.

Web developers that want to take advantage of the best technology available need to know what a browser supports so that their webpages render in the best way possible given a browser's capabilities. Web developers have developed a strategy wherein when a webpage is initialized by a web browser, the web page can request basic access to the desired technologies and if the technologies are supported the browser can report back no errors. However, just because a page tests for the support of certain technologies often doesn't mean that the page is configured to take advantage of the technologies. Use of some of these technologies may expose users to potential security vulnerabilities or require significant power drains, and as such loading these resources merely for a test is undesirable.

SUMMARY

Disclosed are systems, methods, and non-transitory computer-readable storage media for emulating a supported web browser feature when a webpage is merely testing for web browser support of various features. Frequently a web page may test for support of various features of a web browser. The present technology prevents the unnecessary and premature initiation of supported features saving a user time from having to authorize its use, in addition to saving the valuable system resources (e.g. memory, power, etc.) before the supported features are actually needed by the webpage. By emulating or spoofing support of various features of a web browser, the user of a computing device can be spared authorizing use of the various features, and spared the extra power consumption of initializing the various features that may not be used.

DESCRIPTION

The disclosed technology addresses the need in the art for emulating a supported web browser feature when a webpage is merely testing for web browser support of various features. The present technology prevents unnecessary and premature initiation of the supported features which can save a user from having to authorize its use, and can save valuable system resources (e.g., memory, power, etc.) before the supported features are actually needed by the webpage. For example the present technology can emulate a WebGL API when a webpage initializes and attempts to determine if a web browser supports the WebGL API. Frequently a web page may test for support of the WebGL API, but never actually attempt to use the WebGL API to support content on the webpage. By emulating or spoofing the WebGL API, the user of a computing device can be spared authorizing use of WebGL, and spared the extra power consumption of initializing a 3-D construct on a graphics processing unit (GPU) that may not be used.

As used herein, the term “user” shall be considered to mean a user of an electronic device(s). Actions performed by a user in the context of computer software shall be considered to be actions taken by a user to provide an input to the electronic device(s) to cause the electronic device to perform the steps embodied in computer software. In some instances a user can refer to a user account associated with a particular electronic device.

FIG. 1illustrates an exemplary system architecture for use with the present technology. For example a computing device (such as the computing devices illustrated inFIG. 5AandFIG. 5B) can execute various software including an operating system108, and web browser104. As web browsers commonly do, the web browser104can be used to navigate the Internet and be asked to load and render various webpages102.

The web browser of the present technology can include a feature emulator106which will be discussed in more detail below. The web browser104can make use of certain services and software provided by the operating system108. As operating systems commonly do, the operating system108can provide system level software for accessing and using system hardware such as general purpose computing hardware110, and special purpose hardware112.

In a general sense, general purpose hardware can be considered hardware that is almost always activated in the general usage of a system, while special purpose hardware can be considered hardware that is often activated only when required. General purpose hardware110can include any hardware that is used to perform basic computing system functions including but not limited to a central computing unit (or processor), system bus, memory, storage, user interface devices, display outputs, audio outputs, etc. Special purpose hardware112can include any hardware of limited use for specialized purposes including but not limited to graphics processing unit (GPU), graphics memory, location detecting hardware, motion detecting hardware, cellular communication hardware, etc. In some cases general purpose computing hardware110can be used in an unusual fashion and can constitute special purpose hardware112. Likewise, in some systems, one or more items identified as special purpose hardware may also or frequently be activated and as such should be considered general purpose hardware110on such systems.

While in some embodiments the present technology is described with respect to deferring a potential activation of one or more special purpose hardware112components, in some embodiments the present technology can extend to delaying use of a general purpose computing hardware component too.

FIG. 2illustrates an exemplary process for emulating a supported feature of a web browser. Upon initializing, a webpage102might attempt to check to determine whether a web browser supports certain features. The webpage102can issue and the web browser104can receive a request for the supported feature202.

The web browser104determines whether it can successfully emulate or spoof the supported feature with a feature emulator module106without actually initializing the supported feature204. The web browser can be configured with a collection of potential commands and feature requests that can be emulated. In general, the web browser can emulate, with feature emulator module106, requests or commands to create a context, create an array, create a buffer, etc. while the web browser cannot emulate requests or commands to access specialized hardware to perform the actual function of the hardware, or read out of memory reserved for the specialized hardware. For example, the feature emulator module106can establish a canvas and associate a 3-D drawing context with the canvas, but it cannot actually draw or manipulate a 3-D object. Similarly, a feature emulator module can emulate initializing GPS hardware, but cannot return GPS coordinates.

If the feature emulator module106can emulate the supported feature sufficiently to respond to the request without a fatal error204, the feature emulator module206emulates the web browser feature206and responds to the webpage208.

Often a webpage will attempt to access a supported feature when initializing. However, the webpage may not actually make use of the supported feature for any other purpose than to confirm that the web browser has the stated capability. In such instances the feature emulator can handle the request from the webpage by emulating the supported feature using only general purpose hardware110, thus saving resources.

Of course, sometimes a webpage's initial requests to access a supported feature are a prelude to actually utilizing the supported feature to display content. In such instances the method illustrated inFIG. 2might proceed as already explained where the feature emulator emulates the supported feature during initialization of the webpage, however, the webpage might make a subsequent request for the supported feature202, which the feature emulator module106cannot emulate204.

When the feature emulator module106can not emulate the supported feature adequately to respond to a request for the feature, the web browser can request user permission210to start the supported feature. Assuming that permission was granted by a user of the computing device, the feature is started212.

Since, the feature emulator module106may have already emulated some supported feature functions at206, it is important to check the feature emulator module106for any saved state information pertinent to the supported feature214. Since the webpage does not know that its earlier requests for the supported feature were actually spoofed, it assumes that the results of its earlier interactions are still in memory. For example, if a given context was loaded, or a memory structure was established, the webpage assumes the context is in fact loaded and the memory structure is established and can be used for further operations. As such if there is any saved state information it can be imported216into the supported feature.

As noted above, in some instances the feature emulator module106can only imperfectly emulate the supported feature. To accommodate such occurrences, the feature emulator module can record all operations that have been performed with the supported feature that have been emulated. For operations that have been adequately emulated, it may be sufficient to just record the state information and transfer it to the memory associated with the supported feature. For operations that have not been adequately emulated, the feature emulator module106might have to instruct the supported feature to re-perform the operations.

Once the state information is imported and the supported feature fully initialized and caught up with the previous instructions given by the webpage, the supported feature can respond to the request218.

FIG. 3illustrates an exemplary system architecture for use with the present technology when emulating a WebGL feature, andFIG. 4illustrates an exemplary process for emulating a WebGL feature of a web browser. These two figures will be discussed together for the purposes of explaining the present technology with respect to a specific supported feature—WebGL.

WebGL (Web Graphics Library) is a JavaScript API for rendering interactive 3D graphics and 2D graphics within any compatible web browser without the use of plug-ins. WebGL is integrated completely into all the web standards of the browser allowing GPU accelerated usage of physics and image processing and effects as part of the web page canvas.

Webpage302can query the web browser304to determine whether the web browser304supports WebGL402. The web browser304confirms WebGL support404. In some embodiments webpages attempt to actually initialize WebGL with a basic instruction. In this example, the webpage302instructs the web browser304to build a canvas and associate the canvas with a WebGL context406. In many cases a webpage might not make the query regarding support for WebGL and instead, in such cases, the method can begin at step406.

The web browser304determines that it can handle the request408and emulates WebGL410using its feature emulator module308. All of the computing functions to handle the emulation are passed through the operating system310to the general purpose computing hardware316. The browser responds to the request412as if the request were handled through WebGL itself.

If a webpage doesn't actually include content that requires WebGL, the method can end without ever having to utilize WebGL or the specialized graphics hardware314. However, if the webpage does include content that requires 3D graphics processing or other WebGL supported content, the webpage can instruct the browser to perform a drawing operation414. The web browser cannot emulate a drawing operation416and therefore must initialize WebGL. The web browser first requests permission from the user of the computing device to utilize WebGL418, and assuming the user has given the necessary permission, the browser initializes WebGL420. Initializing WebGL requires powering up graphics hardware314, and passing any state information422associated with the prior emulation of the feature to the graphics hardware314including its associated memory.

The web browser then fulfills the drawing operation424by utilizing the support WebGL API306to access the necessary graphics hardware drivers312and utilize the graphics hardware314to complete the drawing operation.

FIG. 5A, andFIG. 5Billustrate exemplary possible system embodiments. The more appropriate embodiment will be apparent to those of ordinary skill in the art when practicing the present technology. Persons of ordinary skill in the art will also readily appreciate that other system embodiments are possible.

FIG. 5Aillustrates a conventional system bus computing system architecture500wherein the components of the system are in electrical communication with each other using a bus505. Exemplary system500includes a processing unit (CPU or processor)510and a system bus505that couples various system components including the system memory515, such as read only memory (ROM)520and random access memory (RAM)525, to the processor510. The system500can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of the processor510. The system500can copy data from the memory515and/or the storage device530to the cache512for quick access by the processor510. In this way, the cache can provide a performance boost that avoids processor510delays while waiting for data. These and other modules can control or be configured to control the processor510to perform various actions. Other system memory515may be available for use as well. The memory515can include multiple different types of memory with different performance characteristics. The processor510can include any general purpose processor and a hardware module or software module, such as module1532, module2534, and module3536stored in storage device530, configured to control the processor510as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor510may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.

To enable user interaction with the computing device500, an input device545can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device535can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input to communicate with the computing device500. The communications interface540can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.

The storage device530can include software modules532,534,536for controlling the processor510. Other hardware or software modules are contemplated. The storage device530can be connected to the system bus505. In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as the processor510, bus505, display535, and so forth, to carry out the function.

Special purpose hardware595can include hardware and software of use for specialized purposes including but not limited to a graphics processing unit (GPU), graphics memory, location detecting hardware, motion detecting hardware, cellular communication hardware, etc.

FIG. 5Billustrates a computer system550having a chipset architecture that can be used in executing the described method and generating and displaying a graphical user interface (GUI). Computer system550is an example of computer hardware, software, and firmware that can be used to implement the disclosed technology. System550can include a processor555, representative of any number of physically and/or logically distinct resources capable of executing software, firmware, and hardware configured to perform identified computations. Processor555can communicate with a chipset560that can control input to and output from processor555. In this example, chipset560outputs information to output565, such as a display, and can read and write information to storage device570, which can include magnetic media, and solid state media, for example. Chipset560can also read data from and write data to RAM575. A bridge580for interfacing with a variety of user interface components585can be provided for interfacing with chipset560. Such user interface components585can include a keyboard, a microphone, touch detection and processing circuitry, a pointing device, such as a mouse, and so on. In general, inputs to system550can come from any of a variety of sources, machine generated and/or human generated.

Chipset560can also interface with one or more communication interfaces590that can have different physical interfaces. Such communication interfaces can include interfaces for wired and wireless local area networks, for broadband wireless networks, as well as personal area networks. Some applications of the methods for generating, displaying, and using the GUI disclosed herein can include receiving ordered datasets over the physical interface or be generated by the machine itself by processor555analyzing data stored in storage570or575. Further, the machine can receive inputs from a user via user interface components585and execute appropriate functions, such as browsing functions by interpreting these inputs using processor555.

Special purpose hardware595can include hardware and software of use for specialized purposes including but not limited to a graphics processing unit (GPU), graphics memory, location detecting hardware, motion detecting hardware, cellular communication hardware, etc.

It can be appreciated that exemplary systems500and550can have more than one processor510or be part of a group or cluster of computing devices networked together to provide greater processing capability.