diff options
Diffstat (limited to 'content')
16 files changed, 0 insertions, 1030 deletions
diff --git a/content/components/DEPS b/content/components/DEPS deleted file mode 100644 index 7d2de7d..0000000 --- a/content/components/DEPS +++ /dev/null @@ -1,12 +0,0 @@ -include_rules = [ - # Do not add chrome/ as an allowed include. Components under - # content/components MUST NOT depend on anything under src/chrome. - - # Subdirectories of content/components/component_name should add the - # parts of the Content API that they need, - # e.g. content/components/component_name/browser would add a - # "+content/public/browser" rule. - "-content", - "+content/public/common", - "+content/public/test", -] diff --git a/content/components/OWNERS b/content/components/OWNERS deleted file mode 100644 index c075174..0000000 --- a/content/components/OWNERS +++ /dev/null @@ -1,16 +0,0 @@ -# =============== BLINK BLINK BLINK =============== -# =============== BLINK BLINK BLINK =============== -# -# Warning: The decision has been made that the new home for components -# that depend on the Content Module and layers below it is -# src/components/. Full details at -# http://www.chromium.org/developers/design-documents/browser-components -# -# The components currently in src/content/components/ -# (this directory) will be moving there. Talk to joi@chromium.org for -# coordination if you are creating a new component. -# -# =============== BLINK BLINK BLINK =============== -# =============== BLINK BLINK BLINK =============== - -joi@chromium.org diff --git a/content/components/README b/content/components/README deleted file mode 100644 index 00266a7..0000000 --- a/content/components/README +++ /dev/null @@ -1,50 +0,0 @@ -=============== BLINK BLINK BLINK =============== -=============== BLINK BLINK BLINK =============== - -Warning: The decision has been made that the new home for components -that depend on the Content Module and layers below it is -src/components/. Full details at -http://www.chromium.org/developers/design-documents/browser-components - -The components currently in src/content/components/ -(this directory) will be moving there. Talk to joi@chromium.org for -coordination if you are creating a new component. - -=============== BLINK BLINK BLINK =============== -=============== BLINK BLINK BLINK =============== - - -This directory is for components that have the Content Module as the -uppermost layer they depend on. They may depend only on the Content -API (content/public) and on lower layers (e.g. base/, net/, ipc/ -etc.). - -These components are not part of the Content Module itself. They are -built in a separate .gyp file (content_components.gyp in this -directory). - -Components that have bits of code that need to live in different -processes (e.g. some code in the browser process, some in the renderer -process, etc.) should separate the code into different subdirectories. -Hence for a component named 'foo' you might end up with a structure -like the following: - -content/components/foo - DEPS, OWNERS, foo.gypi -content/components/foo/browser - code that needs the browser process -content/components/foo/common - for e.g. IPC constants and such -content/components/foo/renderer - code that needs renderer process - -These subdirectories should have DEPS files with the relevant -restrictions in place, e.g. only content/components/foo/browser should -be allowed to #include from content/public/browser. - -Note that there may also be an 'android' subdir, with a Java source -code structure underneath it where the package name is -org.chromium.content.component.foo, and with subdirs after 'foo' -to illustrate process, e.g. 'browser' or 'renderer': - -content/components/foo/android/OWNERS, DEPS -content/components/foo/android/java/src/org/chromium/content/component/foo/browser/ -content/components/foo/android/javatests/src/org/chromium/content/component/foo/browser/ - -Code in content/components/ should be placed in the content:: namespace. diff --git a/content/components/navigation_interception/DEPS b/content/components/navigation_interception/DEPS deleted file mode 100644 index 8ff1d13..0000000 --- a/content/components/navigation_interception/DEPS +++ /dev/null @@ -1,13 +0,0 @@ -include_rules = [ - "+content/public", - "+net/url_request", - - # For generated JNI includes - "+jni", -] - -specific_include_rules = { - '.*_(a-z)+test\.cc': [ - "+testing", - ], -} diff --git a/content/components/navigation_interception/OWNERS b/content/components/navigation_interception/OWNERS deleted file mode 100644 index d7b0401..0000000 --- a/content/components/navigation_interception/OWNERS +++ /dev/null @@ -1,3 +0,0 @@ -jknotten@chromium.org -joth@chromium.org -mkosiba@chromium.org diff --git a/content/components/navigation_interception/component_jni_registrar.cc b/content/components/navigation_interception/component_jni_registrar.cc deleted file mode 100644 index fe7fa56..0000000 --- a/content/components/navigation_interception/component_jni_registrar.cc +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2012 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 "content/components/navigation_interception/component_jni_registrar.h" - -#include "base/android/jni_android.h" -#include "base/android/jni_registrar.h" -#include "content/components/navigation_interception/intercept_navigation_delegate.h" - -namespace content { - -static base::android::RegistrationMethod kComponentRegisteredMethods[] = { - { "InterceptNavigationDelegate", RegisterInterceptNavigationDelegate }, -}; - -bool RegisterNavigationInterceptionJni(JNIEnv* env) { - return RegisterNativeMethods(env, - kComponentRegisteredMethods, arraysize(kComponentRegisteredMethods)); -} - -} // namespace content diff --git a/content/components/navigation_interception/component_jni_registrar.h b/content/components/navigation_interception/component_jni_registrar.h deleted file mode 100644 index 62ead61..0000000 --- a/content/components/navigation_interception/component_jni_registrar.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2012 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. - -#ifndef CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_COMPONENT_JNI_REGISTRAR_H_ -#define CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_COMPONENT_JNI_REGISTRAR_H_ - -#include <jni.h> - -namespace content { - -// Register all JNI bindings necessary for the navigation_interception -// component. -bool RegisterNavigationInterceptionJni(JNIEnv* env); - -} // namespace content - -#endif // CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_COMPONENT_JNI_REGISTRAR_H_ diff --git a/content/components/navigation_interception/intercept_navigation_delegate.cc b/content/components/navigation_interception/intercept_navigation_delegate.cc deleted file mode 100644 index 17f7324..0000000 --- a/content/components/navigation_interception/intercept_navigation_delegate.cc +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2012 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 "content/components/navigation_interception/intercept_navigation_delegate.h" - -#include "base/android/jni_android.h" -#include "base/android/jni_string.h" -#include "base/callback.h" -#include "content/components/navigation_interception/intercept_navigation_resource_throttle.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_view_host.h" -#include "content/public/browser/web_contents.h" -#include "googleurl/src/gurl.h" -#include "jni/InterceptNavigationDelegate_jni.h" -#include "net/url_request/url_request.h" - -using base::android::ConvertUTF8ToJavaString; -using base::android::ScopedJavaLocalRef; -using content::BrowserThread; -using content::RenderViewHost; -using content::WebContents; - -namespace content { - -namespace { - -const void* kInterceptNavigationDelegateUserDataKey = - &kInterceptNavigationDelegateUserDataKey; - -bool CheckIfShouldIgnoreNavigationOnUIThread(RenderViewHost* source, - const GURL& url, - const content::Referrer& referrer, - bool is_post, - bool has_user_gesture, - PageTransition transition_type) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - DCHECK(source); - - WebContents* web_contents = WebContents::FromRenderViewHost(source); - if (!web_contents) - return false; - InterceptNavigationDelegate* intercept_navigation_delegate = - InterceptNavigationDelegate::Get(web_contents); - if (!intercept_navigation_delegate) - return false; - - return intercept_navigation_delegate->ShouldIgnoreNavigation( - url, is_post, has_user_gesture, transition_type); -} - -} // namespace - -// static -void InterceptNavigationDelegate::Associate( - WebContents* web_contents, - scoped_ptr<InterceptNavigationDelegate> delegate) { - web_contents->SetUserData(kInterceptNavigationDelegateUserDataKey, - delegate.release()); -} - -// static -InterceptNavigationDelegate* InterceptNavigationDelegate::Get( - WebContents* web_contents) { - return reinterpret_cast<InterceptNavigationDelegate*>( - web_contents->GetUserData(kInterceptNavigationDelegateUserDataKey)); -} - -// static -content::ResourceThrottle* InterceptNavigationDelegate::CreateThrottleFor( - net::URLRequest* request) { - return new InterceptNavigationResourceThrottle( - request, base::Bind(&CheckIfShouldIgnoreNavigationOnUIThread)); -} - -InterceptNavigationDelegate::InterceptNavigationDelegate( - JNIEnv* env, jobject jdelegate) - : weak_jdelegate_(env, jdelegate) { -} - -InterceptNavigationDelegate::~InterceptNavigationDelegate() { -} - -bool InterceptNavigationDelegate::ShouldIgnoreNavigation( - const GURL& url, - bool is_post, - bool has_user_gesture, - PageTransition transition_type) { - if (!url.is_valid()) - return false; - - JNIEnv* env = base::android::AttachCurrentThread(); - ScopedJavaLocalRef<jobject> jdelegate = weak_jdelegate_.get(env); - - if (jdelegate.is_null()) - return false; - - ScopedJavaLocalRef<jstring> jstring_url = - ConvertUTF8ToJavaString(env, url.spec()); - return Java_InterceptNavigationDelegate_shouldIgnoreNavigation( - env, - jdelegate.obj(), - jstring_url.obj(), - is_post, - has_user_gesture, - transition_type); -} - -// Register native methods. - -bool RegisterInterceptNavigationDelegate(JNIEnv* env) { - return RegisterNativesImpl(env); -} - -} // namespace content diff --git a/content/components/navigation_interception/intercept_navigation_delegate.h b/content/components/navigation_interception/intercept_navigation_delegate.h deleted file mode 100644 index ab60a68..0000000 --- a/content/components/navigation_interception/intercept_navigation_delegate.h +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2012 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. - -#ifndef CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_DELEGATE_H_ -#define CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_DELEGATE_H_ - -#include "base/android/jni_helper.h" -#include "base/memory/scoped_ptr.h" -#include "base/supports_user_data.h" -#include "content/public/common/page_transition_types.h" - -class GURL; - -namespace content { -class ResourceThrottle; -class WebContents; -} - -namespace net { -class URLRequest; -} - -namespace content { - -// Native side of the InterceptNavigationDelegate Java interface. -// This is used to create a InterceptNavigationResourceThrottle that calls the -// Java interface method to determine whether a navigation should be ignored or -// not. -// To us this class: -// 1) the Java-side interface implementation must be associated (via the -// Associate method) with a WebContents for which URLRequests are to be -// intercepted, -// 2) the ResourceThrottle obtained via CreateThrottleFor must be associated -// with the URLRequests in the ResourceDispatcherHostDelegate -// implementation. -class InterceptNavigationDelegate : public base::SupportsUserData::Data { - public: - InterceptNavigationDelegate(JNIEnv* env, jobject jdelegate); - virtual ~InterceptNavigationDelegate(); - - // Associates the InterceptNavigationDelegate with a WebContents using the - // SupportsUserData mechanism. - // As implied by the use of scoped_ptr, the WebContents will assume ownership - // of |delegate|. - static void Associate(content::WebContents* web_contents, - scoped_ptr<InterceptNavigationDelegate> delegate); - // Gets the InterceptNavigationDelegate associated with the WebContents, - // can be null. - static InterceptNavigationDelegate* Get(content::WebContents* web_contents); - - // Creates a InterceptNavigationResourceThrottle that will direct all - // callbacks to the InterceptNavigationDelegate. - static content::ResourceThrottle* CreateThrottleFor( - net::URLRequest* request); - - virtual bool ShouldIgnoreNavigation(const GURL& url, - bool is_post, - bool has_user_gesture, - PageTransition transition_type); - private: - JavaObjectWeakGlobalRef weak_jdelegate_; -}; - -bool RegisterInterceptNavigationDelegate(JNIEnv* env); - -} // namespace content - -#endif // CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_DELEGATE_H_ diff --git a/content/components/navigation_interception/intercept_navigation_resource_throttle.cc b/content/components/navigation_interception/intercept_navigation_resource_throttle.cc deleted file mode 100644 index daf93a6..0000000 --- a/content/components/navigation_interception/intercept_navigation_resource_throttle.cc +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) 2012 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 "content/components/navigation_interception/intercept_navigation_resource_throttle.h" - -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/child_process_security_policy.h" -#include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/browser/resource_request_info.h" -#include "content/public/browser/resource_controller.h" -#include "content/public/common/page_transition_types.h" -#include "content/public/common/referrer.h" -#include "net/url_request/url_request.h" - -using content::BrowserThread; -using content::ChildProcessSecurityPolicy; -using content::Referrer; -using content::RenderViewHost; -using content::ResourceRequestInfo; - -namespace content { - -namespace { - -struct ShouldIgnoreCallbackParams { - int render_process_id; - int render_view_id; - GURL url; - Referrer referrer; - bool has_user_gesture; - bool is_post; - PageTransition transition_type; -}; - -void CheckIfShouldIgnoreNavigationOnUIThread( - const ShouldIgnoreCallbackParams& params, - InterceptNavigationResourceThrottle::CheckOnUIThreadCallback - should_ignore_callback, - base::Callback<void(bool)> callback) { - - bool should_ignore_navigation = false; - RenderViewHost* rvh = - RenderViewHost::FromID(params.render_process_id, params.render_view_id); - - if (rvh) { - GURL validated_url(params.url); - RenderViewHost::FilterURL(rvh->GetProcess(), false, &validated_url); - - should_ignore_navigation = should_ignore_callback.Run( - rvh, - validated_url, - params.referrer, - params.is_post, - params.has_user_gesture, - params.transition_type); - } - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(callback, should_ignore_navigation)); -} - -} // namespace - -InterceptNavigationResourceThrottle::InterceptNavigationResourceThrottle( - net::URLRequest* request, - CheckOnUIThreadCallback should_ignore_callback) - : request_(request), - should_ignore_callback_(should_ignore_callback), - weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { -} - -InterceptNavigationResourceThrottle::~InterceptNavigationResourceThrottle() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); -} - -void InterceptNavigationResourceThrottle::WillStartRequest(bool* defer) { - *defer = CheckIfShouldIgnoreNavigation(request_->url()); -} - -void InterceptNavigationResourceThrottle::WillRedirectRequest( - const GURL& new_url, - bool* defer) { - *defer = CheckIfShouldIgnoreNavigation(new_url); -} - -bool InterceptNavigationResourceThrottle::CheckIfShouldIgnoreNavigation( - const GURL& url) { - const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); - if (!info) - return false; - - int render_process_id, render_view_id; - if (!info->GetAssociatedRenderView(&render_process_id, &render_view_id)) - return false; - - ShouldIgnoreCallbackParams params; - params.render_process_id = render_process_id; - params.render_view_id = render_view_id; - params.url = url; - params.referrer = Referrer(GURL(request_->referrer()), - info->GetReferrerPolicy()); - params.has_user_gesture = info->HasUserGesture(); - params.is_post = request_->method() == "POST"; - params.transition_type = info->GetPageTransition(); - - BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind( - &CheckIfShouldIgnoreNavigationOnUIThread, - params, - should_ignore_callback_, - base::Bind( - &InterceptNavigationResourceThrottle::OnResultObtained, - weak_ptr_factory_.GetWeakPtr()))); - - // Defer request while we wait for the UI thread to check if the navigation - // should be ignored. - return true; -} - -void InterceptNavigationResourceThrottle::OnResultObtained( - bool should_ignore_navigation) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - if (should_ignore_navigation) { - controller()->CancelAndIgnore(); - } else { - controller()->Resume(); - } -} - -} // namespace content diff --git a/content/components/navigation_interception/intercept_navigation_resource_throttle.h b/content/components/navigation_interception/intercept_navigation_resource_throttle.h deleted file mode 100644 index cbff601..0000000 --- a/content/components/navigation_interception/intercept_navigation_resource_throttle.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2012 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. - -#ifndef CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_RESOURCE_THROTTLE_H_ -#define CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_RESOURCE_THROTTLE_H_ - -#include <string> - -#include "base/callback.h" -#include "base/memory/weak_ptr.h" -#include "content/public/browser/resource_throttle.h" -#include "content/public/common/page_transition_types.h" - -class GURL; - -namespace content { -class RenderViewHost; -struct Referrer; -} - -namespace net { -class URLRequest; -} - -namespace content { - -// This class allows the provider of the Callback to selectively ignore top -// level navigations. -class InterceptNavigationResourceThrottle : public content::ResourceThrottle { - public: - typedef base::Callback<bool(content::RenderViewHost* /* source */, - const GURL& /* url */, - const content::Referrer& /*referrer*/, - bool /* is_post */, - bool /* has_user_gesture */, - PageTransition /* page transition type */)> - CheckOnUIThreadCallback; - - InterceptNavigationResourceThrottle( - net::URLRequest* request, - CheckOnUIThreadCallback should_ignore_callback); - virtual ~InterceptNavigationResourceThrottle(); - - // content::ResourceThrottle implementation: - virtual void WillStartRequest(bool* defer) OVERRIDE; - virtual void WillRedirectRequest(const GURL& new_url, bool* defer) OVERRIDE; - - private: - bool CheckIfShouldIgnoreNavigation(const GURL& url); - void OnResultObtained(bool should_ignore_navigation); - - net::URLRequest* request_; - CheckOnUIThreadCallback should_ignore_callback_; - base::WeakPtrFactory<InterceptNavigationResourceThrottle> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(InterceptNavigationResourceThrottle); -}; - -} // namespace content - -#endif // CONTENT_COMPONENTS_NAVIGATION_INTERCEPTION_INTERCEPT_NAVIGATION_RESOURCE_THROTTLE_H_ diff --git a/content/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc b/content/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc deleted file mode 100644 index 26964d4..0000000 --- a/content/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc +++ /dev/null @@ -1,414 +0,0 @@ -// Copyright (c) 2012 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 "base/bind.h" -#include "base/bind_helpers.h" -#include "base/memory/scoped_ptr.h" -#include "base/memory/scoped_vector.h" -#include "base/synchronization/waitable_event.h" -#include "content/components/navigation_interception/intercept_navigation_resource_throttle.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/browser/resource_context.h" -#include "content/public/browser/resource_controller.h" -#include "content/public/browser/resource_dispatcher_host.h" -#include "content/public/browser/resource_dispatcher_host_delegate.h" -#include "content/public/browser/resource_request_info.h" -#include "content/public/browser/resource_throttle.h" -#include "content/public/browser/web_contents.h" -#include "content/public/browser/web_contents_delegate.h" -#include "content/public/common/page_transition_types.h" -#include "content/public/test/mock_resource_context.h" -#include "content/public/test/test_browser_thread.h" -#include "content/public/test/test_renderer_host.h" -#include "net/url_request/url_request.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -using testing::_; -using testing::Eq; -using testing::Ne; -using testing::Return; - -namespace content { - -namespace { - -const char kTestUrl[] = "http://www.test.com/"; -const char kUnsafeTestUrl[] = "about:crash"; - -void ContinueTestCase() { - BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - MessageLoop::QuitClosure()); -} - -} // namespace - -// MockInterceptCallbackReceiver ---------------------------------------------- - -class MockInterceptCallbackReceiver { - public: - MOCK_METHOD6(ShouldIgnoreNavigation, bool(RenderViewHost* source, - const GURL& url, - const Referrer& referrer, - bool is_post, - bool has_user_gesture, - PageTransition page_transition)); -}; - -// MockResourceController ----------------------------------------------------- -class MockResourceController : public ResourceController { - public: - enum Status { - UNKNOWN, - RESUMED, - CANCELLED - }; - - MockResourceController() - : status_(UNKNOWN) { - } - - Status status() const { return status_; } - - // ResourceController: - virtual void Cancel() { - NOTREACHED(); - } - virtual void CancelAndIgnore() { - status_ = CANCELLED; - ContinueTestCase(); - } - virtual void CancelWithError(int error_code) { - NOTREACHED(); - } - virtual void Resume() { - DCHECK(status_ == UNKNOWN); - status_ = RESUMED; - ContinueTestCase(); - } - - private: - Status status_; -}; - -// TestIOThreadState ---------------------------------------------------------- - -class TestIOThreadState { - public: - TestIOThreadState(const GURL& url, int render_process_id, int render_view_id, - const std::string& request_method, - MockInterceptCallbackReceiver* callback_receiver) - : request_(url, NULL, resource_context_.GetRequestContext()), - throttle_(NULL) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (render_process_id != MSG_ROUTING_NONE && - render_view_id != MSG_ROUTING_NONE) { - ResourceRequestInfo::AllocateForTesting(&request_, - ResourceType::MAIN_FRAME, - &resource_context_, - render_process_id, - render_view_id); - } - throttle_.reset(new InterceptNavigationResourceThrottle( - &request_, - base::Bind(&MockInterceptCallbackReceiver::ShouldIgnoreNavigation, - base::Unretained(callback_receiver)))); - throttle_->set_controller_for_testing(&throttle_controller_); - request_.set_method(request_method); - } - - void ThrottleWillStartRequest(bool* defer) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - throttle_->WillStartRequest(defer); - } - - bool request_resumed() const { - return throttle_controller_.status() == - MockResourceController::RESUMED; - } - - bool request_cancelled() const { - return throttle_controller_.status() == - MockResourceController::CANCELLED; - } - - private: - MockResourceContext resource_context_; - net::URLRequest request_; - scoped_ptr<InterceptNavigationResourceThrottle> throttle_; - MockResourceController throttle_controller_; -}; - -// InterceptNavigationResourceThrottleTest ------------------------------------ - -class InterceptNavigationResourceThrottleTest - : public RenderViewHostTestHarness { - public: - InterceptNavigationResourceThrottleTest() - : mock_callback_receiver_(new MockInterceptCallbackReceiver()), - ui_thread_(BrowserThread::UI, &message_loop_), - io_thread_(BrowserThread::IO), - io_thread_state_(NULL) { - } - - virtual void SetUp() OVERRIDE { - RenderViewHostTestHarness::SetUp(); - - io_thread_.StartIOThread(); - } - - virtual void TearDown() OVERRIDE { - if (web_contents()) - web_contents()->SetDelegate(NULL); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(&base::DeletePointer<TestIOThreadState>, io_thread_state_)); - - RenderViewHostTestHarness::TearDown(); - } - - void SetIOThreadState(TestIOThreadState* io_thread_state) { - io_thread_state_ = io_thread_state; - } - - void RunThrottleWillStartRequestOnIOThread( - const GURL& url, - const std::string& request_method, - int render_process_id, - int render_view_id, - bool* defer) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - TestIOThreadState* io_thread_state = - new TestIOThreadState(url, render_process_id, render_view_id, - request_method, mock_callback_receiver_.get()); - - SetIOThreadState(io_thread_state); - io_thread_state->ThrottleWillStartRequest(defer); - - if (!*defer) { - ContinueTestCase(); - } - } - - protected: - enum ShouldIgnoreNavigationCallbackAction { - IgnoreNavigation, - DontIgnoreNavigation - }; - - void SetUpWebContentsDelegateAndRunMessageLoop( - ShouldIgnoreNavigationCallbackAction callback_action, - bool* defer) { - - ON_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, _, _, _, _, _)) - .WillByDefault(Return(callback_action == IgnoreNavigation)); - EXPECT_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(rvh(), Eq(GURL(kTestUrl)), _, _, _, _)) - .Times(1); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kTestUrl), - "GET", - web_contents()->GetRenderViewHost()->GetProcess()->GetID(), - web_contents()->GetRenderViewHost()->GetRoutingID(), - base::Unretained(defer))); - - // Wait for the request to finish processing. - message_loop_.Run(); - } - - void WaitForPreviouslyScheduledIoThreadWork() { - base::WaitableEvent io_thread_work_done(true, false); - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &base::WaitableEvent::Signal, - base::Unretained(&io_thread_work_done))); - io_thread_work_done.Wait(); - } - - scoped_ptr<MockInterceptCallbackReceiver> mock_callback_receiver_; - TestBrowserThread ui_thread_; - TestBrowserThread io_thread_; - TestIOThreadState* io_thread_state_; -}; - -TEST_F(InterceptNavigationResourceThrottleTest, - RequestDeferredAndResumedIfNavigationNotIgnored) { - bool defer = false; - SetUpWebContentsDelegateAndRunMessageLoop(DontIgnoreNavigation, &defer); - - EXPECT_TRUE(defer); - EXPECT_TRUE(io_thread_state_); - EXPECT_TRUE(io_thread_state_->request_resumed()); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - RequestDeferredAndCancelledIfNavigationIgnored) { - bool defer = false; - SetUpWebContentsDelegateAndRunMessageLoop(IgnoreNavigation, &defer); - - EXPECT_TRUE(defer); - EXPECT_TRUE(io_thread_state_); - EXPECT_TRUE(io_thread_state_->request_cancelled()); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - NoCallbackMadeIfContentsDeletedWhileThrottleRunning) { - bool defer = false; - - // The tested scenario is when the WebContents is deleted after the - // ResourceThrottle has finished processing on the IO thread but before the - // UI thread callback has been processed. - BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind( - &RenderViewHostTestHarness::DeleteContents, - base::Unretained(this))); - - EXPECT_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, _, _, _, _, _)) - .Times(0); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kTestUrl), - "GET", - web_contents()->GetRenderViewHost()->GetProcess()->GetID(), - web_contents()->GetRenderViewHost()->GetRoutingID(), - base::Unretained(&defer))); - - WaitForPreviouslyScheduledIoThreadWork(); - - // The WebContents will now be deleted and only after that will the UI-thread - // callback posted by the ResourceThrottle be executed. - message_loop_.Run(); - - EXPECT_TRUE(defer); - EXPECT_TRUE(io_thread_state_); - EXPECT_TRUE(io_thread_state_->request_resumed()); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - RequestNotDeferredForRequestNotAssociatedWithARenderView) { - bool defer = false; - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kTestUrl), - "GET", - MSG_ROUTING_NONE, - MSG_ROUTING_NONE, - base::Unretained(&defer))); - - // Wait for the request to finish processing. - message_loop_.Run(); - - EXPECT_FALSE(defer); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - CallbackCalledWithFilteredUrl) { - bool defer = false; - - ON_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, Ne(GURL(kUnsafeTestUrl)), _, _, _, _)) - .WillByDefault(Return(false)); - EXPECT_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, Ne(GURL(kUnsafeTestUrl)), _, _, _, _)) - .Times(1); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kUnsafeTestUrl), - "GET", - web_contents()->GetRenderViewHost()->GetProcess()->GetID(), - web_contents()->GetRenderViewHost()->GetRoutingID(), - base::Unretained(&defer))); - - // Wait for the request to finish processing. - message_loop_.Run(); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - CallbackIsPostFalseForGet) { - bool defer = false; - - EXPECT_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, Ne(GURL(kUnsafeTestUrl)), _, false, _, - _)) - .WillOnce(Return(false)); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kTestUrl), - "GET", - web_contents()->GetRenderViewHost()->GetProcess()->GetID(), - web_contents()->GetRenderViewHost()->GetRoutingID(), - base::Unretained(&defer))); - - // Wait for the request to finish processing. - message_loop_.Run(); -} - -TEST_F(InterceptNavigationResourceThrottleTest, - CallbackIsPostTrueForPost) { - bool defer = false; - - EXPECT_CALL(*mock_callback_receiver_, - ShouldIgnoreNavigation(_, Ne(GURL(kUnsafeTestUrl)), _, true, _, - _)) - .WillOnce(Return(false)); - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind( - &InterceptNavigationResourceThrottleTest:: - RunThrottleWillStartRequestOnIOThread, - base::Unretained(this), - GURL(kTestUrl), - "POST", - web_contents()->GetRenderViewHost()->GetProcess()->GetID(), - web_contents()->GetRenderViewHost()->GetRoutingID(), - base::Unretained(&defer))); - - // Wait for the request to finish processing. - message_loop_.Run(); -} - -} // namespace content diff --git a/content/components/navigation_interception/java/src/org/chromium/content/components/navigation_interception/InterceptNavigationDelegate.java b/content/components/navigation_interception/java/src/org/chromium/content/components/navigation_interception/InterceptNavigationDelegate.java deleted file mode 100644 index 973ee27..0000000 --- a/content/components/navigation_interception/java/src/org/chromium/content/components/navigation_interception/InterceptNavigationDelegate.java +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) 2012 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. - -package org.chromium.content.components.navigation_interception; - -import org.chromium.base.CalledByNative; - -public interface InterceptNavigationDelegate { - /** - * This method is called for every top-level navigation within the associated WebContents. - * The method allows the embedder to ignore navigations. This is used on Android to 'convert' - * certain navigations to Intents to 3rd party applications. - * - * @param url the target url of the navigation. - * @param isPost true if the the navigation method is "POST". - * @param isUserGesture true if the navigation was initiated by the user. - * @param pageTransition is the page transition type (e.g. link / typed). - * @return true if the navigation should be ignored. - */ - @CalledByNative - boolean shouldIgnoreNavigation(String url, boolean isPost, boolean isUserGesture, - int pageTransition); -} diff --git a/content/content.gyp b/content/content.gyp index 31b8335..0155546 100644 --- a/content/content.gyp +++ b/content/content.gyp @@ -33,7 +33,6 @@ ['OS != "ios"', { 'includes': [ '../build/win_precompile.gypi', - 'content_components_navigation_interception.gypi', 'content_shell.gypi', ], }], diff --git a/content/content_components_navigation_interception.gypi b/content/content_components_navigation_interception.gypi deleted file mode 100644 index f4d6b8b..0000000 --- a/content/content_components_navigation_interception.gypi +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2012 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. - -{ - 'targets': [ - { - 'target_name': 'navigation_interception', - 'type': 'static_library', - 'defines!': ['CONTENT_IMPLEMENTATION'], - 'dependencies': [ - '../base/base.gyp:base', - '../net/net.gyp:net', - 'content_browser', - 'content_common', - ], - 'include_dirs': [ - '..', - '../skia/config', - '<(SHARED_INTERMEDIATE_DIR)/navigation_interception', - - ], - 'sources': [ - 'components/navigation_interception/intercept_navigation_resource_throttle.cc', - 'components/navigation_interception/intercept_navigation_resource_throttle.h', - ], - 'conditions': [ - ['OS=="android"', { - 'dependencies': [ - 'navigation_interception_jni_headers', - ], - 'sources': [ - 'components/navigation_interception/component_jni_registrar.cc', - 'components/navigation_interception/component_jni_registrar.h', - 'components/navigation_interception/intercept_navigation_delegate.cc', - 'components/navigation_interception/intercept_navigation_delegate.h', - ], - }], - ], - }, - ], - 'conditions': [ - ['OS=="android"', { - 'targets': [ - { - 'target_name': 'navigation_interception_java', - 'type': 'none', - 'dependencies': [ - '../base/base.gyp:base', - ], - 'variables': { - 'package_name': 'navigation_interception', - 'java_in_dir': 'components/navigation_interception/java', - }, - 'includes': [ '../build/java.gypi' ], - }, - { - 'target_name': 'navigation_interception_jni_headers', - 'type': 'none', - 'sources': [ - 'components/navigation_interception/java/src/org/chromium/content/components/navigation_interception/InterceptNavigationDelegate.java', - ], - 'variables': { - 'jni_gen_dir': 'navigation_interception', - }, - 'includes': [ '../build/jni_generator.gypi' ], - }, - ], - }], - ], -} diff --git a/content/content_tests.gypi b/content/content_tests.gypi index 2841260..719ff2b 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -360,7 +360,6 @@ 'common/sandbox_mac_unittest_helper.h', 'common/sandbox_mac_unittest_helper.mm', 'common/sandbox_mac_system_access_unittest.mm', - 'components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc', 'gpu/gpu_info_collector_unittest.cc', 'renderer/active_notification_tracker_unittest.cc', 'renderer/android/email_detector_unittest.cc', @@ -508,7 +507,6 @@ 'content_plugin', 'content_renderer', 'content_resources.gyp:content_resources', - 'navigation_interception', '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', '../gpu/gpu.gyp:gpu_unittest_utils', '../ipc/ipc.gyp:test_support_ipc', |