summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsdefresne <sdefresne@chromium.org>2015-12-17 05:45:22 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-17 13:46:13 +0000
commit3310eaa5df749be334db7c98e42e5c769deb88a1 (patch)
tree8582b095dc5f247831053b4b9bfaf0a84eb6f7a4
parente6c87d5c00f4cc895173b967d7b02c083d6c964e (diff)
downloadchromium_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}
-rw-r--r--ios/chrome/browser/translate/never_translate_infobar_controller.mm3
-rw-r--r--ios/chrome/ios_chrome_tests.gyp2
-rw-r--r--ios/chrome/test/BUILD.gn2
-rw-r--r--ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.cc22
-rw-r--r--ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_provider.h30
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_