Extensible Browser Plugin Interface Using String Identifiers
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional browser plugin interfaces, such as NPAPI, face challenges in maintaining compatibility across different versions and enforcing secure access to browser capabilities, as they require hardcoding numerical identifiers and lack a standardized way to manage interface versions and privileges.
Innovation Solution
An extensible browser plugin interface that uses string-based interface identifiers to determine supported interfaces and privileges, returning a virtual function table (vtable) to plugins only if they have appropriate access, allowing for dynamic runtime access to browser capabilities while enforcing security through privilege checks.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If numerical identifiers are used in conventional plugin interfaces, then interface identification is straightforward, but compatibility maintenance becomes complex across multiple versions
Solution Approach 1:
The patent changes the identification parameter from numerical IDs to string-based identifiers that explicitly encode version information. This allows the interface to maintain clarity in identification while simplifying version compatibility management through human-readable, structured identifier strings that include version metadata.
Solution Approach 2:
The patent performs preliminary encoding of version information within the interface identifier string itself. By embedding version data in advance within the identifier structure, the system eliminates the need for complex runtime version checking and compatibility management, resolving the contradiction between ease of identification and compatibility complexity.
2Adaptability or versatility
If browser exposes all capabilities to plugins, then plugin functionality is enhanced, but system security is compromised
Solution Approach 1:
The patent applies local quality by differentiating access rights for different interfaces based on their security characteristics. Trusted interfaces are marked with special identifiers and restricted to privileged plugins, while standard interfaces remain accessible to all plugins. This resolves the contradiction by providing enhanced functionality where safe and maintaining security where needed.
Solution Approach 2:
The patent introduces an intermediary mechanism through the identifier string system that mediates between plugin requests and browser capabilities. The identifier structure enables the browser to automatically determine and enforce appropriate access levels, allowing plugins to access needed functionality while the intermediary mechanism ensures security constraints are maintained.
3Stability of the object's composition
If multiple NPAPI version levels are supported, then backward compatibility is maintained, but interface size and complexity increase
Solution Approach 1:
The patent segments the interface identification system into structured identifier strings that contain embedded version information. This segmentation allows the interface to support multiple version levels through distinct identifier patterns rather than maintaining separate interface definitions, reducing overall interface complexity while maintaining backward compatibility.
Solution Approach 2:
The patent creates a universal identifier string format that serves multiple functions: identifying the interface, encoding version information, and indicating trust level. This multi-functional identifier system eliminates the need for separate management structures for each version level, maintaining compatibility while reducing interface size and complexity.
Data Source
AI summary
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for an extensible browser plugin interface. In one aspect, a method includes receiving, at a browser plugin interface, an interface request from a plugin, where the interface request includes an interface identifier string that identifies a particular interface; determining, using the interface identifier string, whether the particular interface is supported by the browser; and if it is determined that the particular interface is supported by the browser, returning to the plugin a virtual function table (vtable) of one or more functions, wherein the vtable is associated with the particular interface identified by the interface request.


