Using Cocoa, create an ActiveBrowserPage class that communicates with the current active page in Safari. If the active window is not Safari, then it should communicate with the last active Safari window. It should always communicate with the page that is the active tab if there are multiple web page tabs open in the same browser window. You should also include in the project a lightweight application (and HTML page) that demonstrates the functionality of the class. The class should have the following methods:
1. GetHiddenField(string hiddenFieldName).
Gets the value of the specified html hidden input field value.
2. SetHiddenField(string hiddenFieldName, string hiddenFieldValue)
Sets the value of the specified html hidden input field value. Returns true for success.
Returns the current url of the page.
Returns the html source code of the page.
7. ExecuteJS(string js).
8. An event that is fired when a new page is loaded, the tab is changed in Safari, or the active Safari instance is changed.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).