Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[embedlite] Add implementation of nsITabChild to TabChildHelper
Signed-off-by: Dmitry Rozhkov <dmitry.rozhkov@jolla.com>
  • Loading branch information
rojkov committed Oct 29, 2015
1 parent c30c1cb commit 9eb3c27
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 3 deletions.
1 change: 1 addition & 0 deletions embedding/embedlite/embedshared/EmbedLiteViewBaseChild.cpp
Expand Up @@ -263,6 +263,7 @@ EmbedLiteViewBaseChild::InitGeckoWindow(const uint32_t& parentId, const bool& is
}

mHelper = new TabChildHelper(this);
mChrome->SetTabChildHelper(mHelper.get());
gfxSize size(bounds.width, bounds.height);
mHelper->ReportSizeUpdate(size);

Expand Down
50 changes: 50 additions & 0 deletions embedding/embedlite/utils/TabChildHelper.cpp
Expand Up @@ -160,6 +160,7 @@ TabChildHelper::Unload()

NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(TabChildHelper)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)
NS_INTERFACE_MAP_ENTRY(nsITabChild)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
NS_INTERFACE_MAP_END_INHERITING(TabChildBase)

Expand Down Expand Up @@ -461,3 +462,52 @@ TabChildHelper::ReportSizeUpdate(const gfxSize& aSize)

HandlePossibleViewportChange(oldScreenSize);
}
// -- nsITabChild --------------

NS_IMETHODIMP
TabChildHelper::GetMessageManager(nsIContentFrameMessageManager** aResult)
{
if (mTabChildGlobal) {
NS_ADDREF(*aResult = mTabChildGlobal);
return NS_OK;
}
*aResult = nullptr;
return NS_ERROR_FAILURE;
}

NS_IMETHODIMP
TabChildHelper::GetWebBrowserChrome(nsIWebBrowserChrome3** aWebBrowserChrome)
{
NS_IF_ADDREF(*aWebBrowserChrome = mWebBrowserChrome);
return NS_OK;
}

NS_IMETHODIMP
TabChildHelper::SetWebBrowserChrome(nsIWebBrowserChrome3* aWebBrowserChrome)
{
mWebBrowserChrome = aWebBrowserChrome;
return NS_OK;
}

void
TabChildHelper::SendRequestFocus(bool aCanFocus)
{
LOGNI();
}

void
TabChildHelper::EnableDisableCommands(const nsAString& aAction,
nsTArray<nsCString>& aEnabledCommands,
nsTArray<nsCString>& aDisabledCommands)
{
LOGNI();
}

NS_IMETHODIMP
TabChildHelper::GetTabId(uint64_t* aId)
{
*aId = mView->GetID();
return NS_OK;
}

// -- end of nsITabChild -------
3 changes: 3 additions & 0 deletions embedding/embedlite/utils/TabChildHelper.h
Expand Up @@ -10,6 +10,7 @@
#include "FrameMetrics.h"
#include "nsFrameMessageManager.h"
#include "nsIWebNavigation.h"
#include "nsITabChild.h"
#include "nsIWidget.h"
#include "InputData.h"
#include "nsDataHashtable.h"
Expand All @@ -27,6 +28,7 @@ namespace embedlite {
class EmbedLiteViewChildIface;
class TabChildHelper : public mozilla::dom::TabChildBase,
public nsIDOMEventListener,
public nsITabChild,
public nsIObserver
{
public:
Expand All @@ -35,6 +37,7 @@ class TabChildHelper : public mozilla::dom::TabChildBase,

NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIDOMEVENTLISTENER
NS_DECL_NSITABCHILD
NS_DECL_NSIOBSERVER

bool RecvUpdateFrame(const mozilla::layers::FrameMetrics& aFrameMetrics);
Expand Down
29 changes: 28 additions & 1 deletion embedding/embedlite/utils/WebBrowserChrome.cpp
Expand Up @@ -30,6 +30,7 @@
#include "nsIEmbedBrowserChromeListener.h"
#include "nsIBaseWindow.h"
#include "ScriptSettings.h" // for AutoNoJSAPI
#include "TabChildHelper.h"

#define MOZ_AFTER_PAINT_LITERAL "MozAfterPaint"
#define MOZ_scroll "scroll"
Expand Down Expand Up @@ -58,6 +59,7 @@ WebBrowserChrome::~WebBrowserChrome()

NS_IMPL_ISUPPORTS(WebBrowserChrome,
nsIWebBrowserChrome,
nsIWebBrowserChrome2,
nsIWebBrowserChromeFocus,
nsIInterfaceRequestor,
nsIEmbeddingSiteWindow,
Expand All @@ -68,6 +70,13 @@ NS_IMETHODIMP WebBrowserChrome::GetInterface(const nsIID& aIID, void** aInstance
{
NS_ENSURE_ARG_POINTER(aInstancePtr);

if (aIID.Equals(NS_GET_IID(nsITabChild))) {
nsCOMPtr<nsITabChild> tabChildHelper;
tabChildHelper = mHelper;
tabChildHelper.forget(aInstancePtr);
return NS_OK;
}

*aInstancePtr = 0;
if (aIID.Equals(NS_GET_IID(nsIDOMWindow))) {
if (!mWebBrowser) {
Expand All @@ -79,7 +88,17 @@ NS_IMETHODIMP WebBrowserChrome::GetInterface(const nsIID& aIID, void** aInstance
return QueryInterface(aIID, aInstancePtr);
}

NS_IMETHODIMP WebBrowserChrome::SetStatus(uint32_t /* statusType*/, const char16_t* /*status*/)
NS_IMETHODIMP WebBrowserChrome::SetStatus(uint32_t aStatusType, const char16_t* aStatus)
{
return SetStatusWithContext(aStatusType,
aStatus ? static_cast<const nsString &>(nsDependentString(aStatus))
: EmptyString(),
nullptr);
}

NS_IMETHODIMP WebBrowserChrome::SetStatusWithContext(uint32_t aStatusType,
const nsAString& aStatusText,
nsISupports* aStatusContext)
{
LOGNI();
return NS_OK;
Expand Down Expand Up @@ -656,3 +675,11 @@ void WebBrowserChrome::RemoveEventHandler()
target->RemoveEventListener(NS_LITERAL_STRING(MOZ_scroll), this, PR_FALSE);
target->RemoveEventListener(NS_LITERAL_STRING(MOZ_AFTER_PAINT_LITERAL), this, PR_FALSE);
}

void WebBrowserChrome::SetTabChildHelper(TabChildHelper* aHelper)
{
NS_ASSERTION(aHelper, "TabChildHelper can't be unset");
NS_ASSERTION(!mHelper, "TabChildHelper can be set only once");

mHelper = aHelper;
}
14 changes: 12 additions & 2 deletions embedding/embedlite/utils/WebBrowserChrome.h
Expand Up @@ -8,7 +8,7 @@

#include "nsCOMPtr.h"
#include "nsIWebBrowser.h"
#include "nsIWebBrowserChrome.h"
#include "nsIWebBrowserChrome2.h"
#include "nsIWebBrowserChromeFocus.h"
#include "nsIWebProgressListener.h"
#include "nsIEmbeddingSiteWindow.h"
Expand All @@ -23,8 +23,14 @@

#define kNotFound -1

namespace mozilla {
namespace embedlite {
class TabChildHelper;
}
}

class nsIEmbedBrowserChromeListener;
class WebBrowserChrome : public nsIWebBrowserChrome,
class WebBrowserChrome : public nsIWebBrowserChrome2,
public nsIWebProgressListener,
public nsIWebBrowserChromeFocus,
public nsIEmbeddingSiteWindow,
Expand All @@ -35,6 +41,7 @@ class WebBrowserChrome : public nsIWebBrowserChrome,
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIWEBBROWSERCHROME
NS_DECL_NSIWEBBROWSERCHROME2
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_NSIWEBBROWSERCHROMEFOCUS
NS_DECL_NSIEMBEDDINGSITEWINDOW
Expand All @@ -47,6 +54,8 @@ class WebBrowserChrome : public nsIWebBrowserChrome,
void SetEventHandler();
void RemoveEventHandler();

void SetTabChildHelper(mozilla::embedlite::TabChildHelper* aHelper);

protected:
virtual ~WebBrowserChrome();

Expand All @@ -71,6 +80,7 @@ class WebBrowserChrome : public nsIWebBrowserChrome,
nsCOMPtr<nsIObserverService> mObserverService;
nsIEmbedBrowserChromeListener* mListener;
nsString mTitle;
nsRefPtr<mozilla::embedlite::TabChildHelper> mHelper;
};

#endif /* Header guard */
Expand Down

0 comments on commit 9eb3c27

Please sign in to comment.