Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Conversation

@joelrbrandt
Copy link
Contributor

Provides an enableAgent/disableAgent API in LiveDevelopment so that extensions can enable more 'experimental' agents.

Satisfies goals of #1301, but doesn't enable experimental agents by default (i.e. their 'load' functions won't get called).

Jonathan Diehl and others added 2 commits July 26, 2012 13:18
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first arg here is the value of _loadedAgents[i], not i itself. As-is I think this code will never try to unload anything.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, never mind... now that I've read below I see _loadedAgents is actually an array of agent names (the keys of 'agents'), not the agents themselves. Could we clarify that either by renaming this array or at least by adding docs where it's declared? Also, similar to below let's not use 'i' here for something that's not actually an index.

(Alternatively, you could change _loadedAgents to be an array of the actual agent objects... that seems fine to me too).

Also, the hasOwnProperty() check can go away now that you're using forEach().

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed name of _loadedAgents to _loadedAgentNames to make this more clear. Also added a comment.

And, I removed the hasOwnProperty check.

@peterflynn
Copy link
Member

@joelrbrandt: Ok, done reviewing

@joelrbrandt
Copy link
Contributor Author

@peterflynn Thanks for the review! Back at you.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you still need the check to see if unload() exists before calling it? I notice the check for load() existing is still present below...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the loadAgents() function, we're reading from '_enabledAgentNames'. Extension developers can put any string they want into this map (through enableAgent). That means that an agent might not actually exist with some name in _enabledAgentNames.

That's why we need the check in the loadAgents() function.

However, we only add a name to the _loadedAgentNames array if an agent with that name a.) exists and b.) has a 'load' function. All agents that have a load function should have an unload function.

So, when we're in unloadAgents and we do agents[name].unload(), an exception is appropriate if unload is undefined (or if agents[name] is undefined)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After writing that, it seems like I should probably be checking in enableAgent to make sure that the agent they specify actually exists.

That'll remove the need to check agents.hasOwnProperty(name) in loadAgents. But, we still need to check for load() existing in the agent. It's possible that some agents might not have load/unload.

However, if an agent has 'load', it needs to have 'unload'. So, the unload test still isn't needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change made in 1bce0f3

@joelrbrandt
Copy link
Contributor Author

@peterflynn back at you again. Thanks!

@peterflynn
Copy link
Member

Sounds reasonable to me -- merging now.

peterflynn added a commit that referenced this pull request Jul 26, 2012
Live Development -- Provide API for enabling/disabling additional Agents
@peterflynn peterflynn merged commit 0161b35 into master Jul 26, 2012
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants