diff options
author | sdefresne <sdefresne@chromium.org> | 2015-12-17 05:45:22 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-17 13:46:13 +0000 |
commit | 3310eaa5df749be334db7c98e42e5c769deb88a1 (patch) | |
tree | 8582b095dc5f247831053b4b9bfaf0a84eb6f7a4 | |
parent | e6c87d5c00f4cc895173b967d7b02c083d6c964e (diff) | |
download | chromium_src-3310eaa5df749be334db7c98e42e5c769deb88a1.zip chromium_src-3310eaa5df749be334db7c98e42e5c769deb88a1.tar.gz chromium_src-3310eaa5df749be334db7c98e42e5c769deb88a1.tar.bz2 |
Add scoped helper to install a custom ChromeBrowserProvider.
BUG=None
Review URL: https://codereview.chromium.org/1532863002
Cr-Commit-Position: refs/heads/master@{#365817}
5 files changed, 57 insertions, 2 deletions
diff --git a/ios/chrome/browser/translate/never_translate_infobar_controller.mm b/ios/chrome/browser/translate/never_translate_infobar_controller.mm index 84fcfaf..f8f1a6a 100644 --- a/ios/chrome/browser/translate/never_translate_infobar_controller.mm +++ b/ios/chrome/browser/translate/never_translate_infobar_controller.mm @@ -35,8 +35,7 @@ translate::TranslateInfoBarDelegate* translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); ios::ChromeBrowserProvider* provider = ios::GetChromeBrowserProvider(); - infoBarView.reset( - ios::GetChromeBrowserProvider()->CreateInfoBarView(frame, self.delegate)); + infoBarView.reset(provider->CreateInfoBarView(frame, self.delegate)); // Icon gfx::Image icon = translateInfoBarDelegate->GetIcon(); if (!icon.IsEmpty()) diff --git a/ios/chrome/ios_chrome_tests.gyp b/ios/chrome/ios_chrome_tests.gyp index 4c1e1cb..043f9e0 100644 --- a/ios/chrome/ios_chrome_tests.gyp +++ b/ios/chrome/ios_chrome_tests.gyp @@ -118,6 +118,8 @@ 'browser/sync/sync_setup_service_mock.h', 'test/block_cleanup_test.h', 'test/block_cleanup_test.mm', + 'test/ios_chrome_scoped_testing_chrome_browser_provider.cc', + 'test/ios_chrome_scoped_testing_chrome_browser_provider.h', 'test/ios_chrome_scoped_testing_local_state.cc', 'test/ios_chrome_scoped_testing_local_state.h', 'test/ios_chrome_unit_test_suite.cc', diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn index 144082b..8be284b 100644 --- a/ios/chrome/test/BUILD.gn +++ b/ios/chrome/test/BUILD.gn @@ -7,6 +7,8 @@ source_set("test") { sources = [ "block_cleanup_test.h", "block_cleanup_test.mm", + "ios_chrome_scoped_testing_chrome_browser_provider.cc", + "ios_chrome_scoped_testing_chrome_browser_provider.h", "ios_chrome_scoped_testing_local_state.cc", "ios_chrome_scoped_testing_local_state.h", "ios_chrome_unit_test_suite.cc", diff --git a/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.cc b/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.cc new file mode 100644 index 0000000..8d71507 --- /dev/null +++ b/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.cc @@ -0,0 +1,22 @@ +// Copyright 2015 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 "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h" + +#include "base/logging.h" +#include "ios/public/provider/chrome/browser/chrome_browser_provider.h" + +IOSChromeScopedTestingChromeBrowserProvider:: + IOSChromeScopedTestingChromeBrowserProvider( + scoped_ptr<ios::ChromeBrowserProvider> chrome_browser_provider) + : chrome_browser_provider_(std::move(chrome_browser_provider)), + original_chrome_browser_provider_(ios::GetChromeBrowserProvider()) { + ios::SetChromeBrowserProvider(chrome_browser_provider_.get()); +} + +IOSChromeScopedTestingChromeBrowserProvider:: + ~IOSChromeScopedTestingChromeBrowserProvider() { + DCHECK_EQ(chrome_browser_provider_.get(), ios::GetChromeBrowserProvider()); + ios::SetChromeBrowserProvider(original_chrome_browser_provider_); +} diff --git a/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h b/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h new file mode 100644 index 0000000..b457384 --- /dev/null +++ b/ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h @@ -0,0 +1,30 @@ +// Copyright 2015 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 IOS_CHROME_TEST_IOS_CHROME_SCOPED_TESTING_CHROME_BROWSER_PROVIDER_H_ +#define IOS_CHROME_TEST_IOS_CHROME_SCOPED_TESTING_CHROME_BROWSER_PROVIDER_H_ + +#include "base/macros.h" +#include "base/memory/scoped_ptr.h" + +namespace ios { +class ChromeBrowserProvider; +} + +// Helper class to temporarily set up a ChromeBrowserProvider and restore +// the previous one on teardown. +class IOSChromeScopedTestingChromeBrowserProvider { + public: + explicit IOSChromeScopedTestingChromeBrowserProvider( + scoped_ptr<ios::ChromeBrowserProvider> chrome_browser_provider); + ~IOSChromeScopedTestingChromeBrowserProvider(); + + private: + scoped_ptr<ios::ChromeBrowserProvider> chrome_browser_provider_; + ios::ChromeBrowserProvider* original_chrome_browser_provider_; + + DISALLOW_COPY_AND_ASSIGN(IOSChromeScopedTestingChromeBrowserProvider); +}; + +#endif // IOS_CHROME_TEST_IOS_CHROME_SCOPED_TESTING_CHROME_BROWSER_PROVIDER_H_ |