Closed Bug 532215 Opened 15 years ago Closed 10 years ago

Plugins: Add BROWSER/PLUGIN-object state to PPluginScriptableObject

Categories

(Core :: IPC, defect)

defect
Not set
normal

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: cjones, Unassigned)

References

(Blocks 1 open bug)

Details

PPluginInstance really represents browser->plugin proxy objects, and plugin->browser proxy objects.  Understandably though, it's a single protocol to keep the NPRuntime methods synchronized.  I'm going to codify these rules into a state machine; the basic idea is

  protocol Object {
  both:
    // all NPRuntime messages

  start state BROWSER_OBJECT:
    recv ...;  // only take messages from the plugin
    recv __delete__;

  start state PLUGIN_OBJECT:
    send ...;  // only send messages from the browser
    send __delete__;

This protocol means that upon creating a PPluginInstance, C++ must choose whether it's a BROWSER_OBJECT or PLUGIN_OBJECT, and thereafter never the twain shall meet.
Oops, brain-dead typo.
Summary: Plugins: Add BROWSER/PLUGIN-object state to PPluginInstance → Plugins: Add BROWSER/PLUGIN-object state to PPluginScriptableObject
(In reply to comment #0)
>   protocol Object {
>   both:
>     // all NPRuntime messages
> 
>   start state BROWSER_OBJECT:
>     recv ...;  // only take messages from the plugin
>     recv __delete__;
> 
>   start state PLUGIN_OBJECT:
>     send ...;  // only send messages from the browser
>     send __delete__;

This protocol is all wrong, because all messages *can* go both ways, except the destructor.  Needs a little more thought.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.