blob: d3c16350908022bd82067bbd1417d88d72a8bc34 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "blimp/client/core/blimp_contents_impl.h"
#include "base/memory/ptr_util.h"
#include "base/supports_user_data.h"
#include "blimp/client/core/public/blimp_contents_observer.h"
#if defined(OS_ANDROID)
#include "blimp/client/core/android/blimp_contents_impl_android.h"
#endif // OS_ANDROID
namespace blimp {
namespace client {
namespace {
#if defined(OS_ANDROID)
const char kBlimpContentsImplAndroidKey[] = "blimp_contents_impl_android";
#endif // OS_ANDROID
}
BlimpContentsImpl::BlimpContentsImpl() : navigation_controller_(this) {}
BlimpContentsImpl::~BlimpContentsImpl() {}
#if defined(OS_ANDROID)
base::android::ScopedJavaLocalRef<jobject>
BlimpContentsImpl::GetJavaBlimpContentsImpl() {
return GetBlimpContentsImplAndroid()->GetJavaObject();
}
BlimpContentsImplAndroid* BlimpContentsImpl::GetBlimpContentsImplAndroid() {
BlimpContentsImplAndroid* blimp_contents_impl_android =
static_cast<BlimpContentsImplAndroid*>(
GetUserData(kBlimpContentsImplAndroidKey));
if (!blimp_contents_impl_android) {
blimp_contents_impl_android = new BlimpContentsImplAndroid(this);
SetUserData(kBlimpContentsImplAndroidKey, blimp_contents_impl_android);
}
return blimp_contents_impl_android;
}
#endif // defined(OS_ANDROID)
BlimpNavigationControllerImpl& BlimpContentsImpl::GetNavigationController() {
return navigation_controller_;
}
void BlimpContentsImpl::AddObserver(BlimpContentsObserver* observer) {
observers_.AddObserver(observer);
}
void BlimpContentsImpl::RemoveObserver(BlimpContentsObserver* observer) {
observers_.RemoveObserver(observer);
}
void BlimpContentsImpl::NotifyURLLoaded(const GURL& url) {
FOR_EACH_OBSERVER(BlimpContentsObserver, observers_, OnURLUpdated(url));
}
} // namespace client
} // namespace blimp