|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
-
- Permission is granted to use this software under the terms of either:
- a) the GPL v2 (or any later version)
- b) the Affero GPL v3
-
- Details of these licenses can be found at: www.gnu.org/licenses
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.juce.com for more information.
-
- ==============================================================================
- */
-
- #ifndef JUCE_WEBBROWSERCOMPONENT_H_INCLUDED
- #define JUCE_WEBBROWSERCOMPONENT_H_INCLUDED
-
- #if JUCE_WEB_BROWSER || DOXYGEN
-
- //==============================================================================
- /**
- A component that displays an embedded web browser.
-
- The browser itself will be platform-dependent. On the Mac, probably Safari, on
- Windows, probably IE.
-
- */
- class JUCE_API WebBrowserComponent : public Component
- {
- public:
- //==============================================================================
- /** Creates a WebBrowserComponent.
-
- Once it's created and visible, send the browser to a URL using goToURL().
-
- @param unloadPageWhenBrowserIsHidden if this is true, then when the browser
- component is taken offscreen, it'll clear the current page
- and replace it with a blank page - this can be handy to stop
- the browser using resources in the background when it's not
- actually being used.
- */
- explicit WebBrowserComponent (bool unloadPageWhenBrowserIsHidden = true);
-
- /** Destructor. */
- ~WebBrowserComponent();
-
- //==============================================================================
- /** Sends the browser to a particular URL.
-
- @param url the URL to go to.
- @param headers an optional set of parameters to put in the HTTP header. If
- you supply this, it should be a set of string in the form
- "HeaderKey: HeaderValue"
- @param postData an optional block of data that will be attached to the HTTP
- POST request
- */
- void goToURL (const String& url,
- const StringArray* headers = nullptr,
- const MemoryBlock* postData = nullptr);
-
- /** Stops the current page loading. */
- void stop();
-
- /** Sends the browser back one page. */
- void goBack();
-
- /** Sends the browser forward one page. */
- void goForward();
-
- /** Refreshes the browser. */
- void refresh();
-
- //==============================================================================
- /** This callback is called when the browser is about to navigate
- to a new location.
-
- You can override this method to perform some action when the user
- tries to go to a particular URL. To allow the operation to carry on,
- return true, or return false to stop the navigation happening.
- */
- virtual bool pageAboutToLoad (const String& newURL);
-
- /** This callback happens when the browser has finished loading a page. */
- virtual void pageFinishedLoading (const String& url);
-
- /** This callback occurs when a script or other activity in the browser asks for
- the window to be closed.
- */
- virtual void windowCloseRequest();
-
- //==============================================================================
- /** @internal */
- void paint (Graphics&) override;
- /** @internal */
- void resized() override;
- /** @internal */
- void parentHierarchyChanged() override;
- /** @internal */
- void visibilityChanged() override;
-
- private:
- //==============================================================================
- class Pimpl;
- Pimpl* browser;
- bool blankPageShown, unloadPageWhenBrowserIsHidden;
- String lastURL;
- StringArray lastHeaders;
- MemoryBlock lastPostData;
-
- void reloadLastURL();
- void checkWindowAssociation();
-
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WebBrowserComponent)
- };
-
-
- #endif
- #endif // JUCE_WEBBROWSERCOMPONENT_H_INCLUDED
|