Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4653)

Unified Diff: chrome/browser/extensions/api/system_display/display_info_provider.cc

Issue 23441032: [SystemInfo API] Rewrite DisplayInfoProvider without SystemInfoProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/system_display/display_info_provider.cc
diff --git a/chrome/browser/extensions/api/system_display/display_info_provider.cc b/chrome/browser/extensions/api/system_display/display_info_provider.cc
index 064688db5694c3865aa6bde3f0ad9c8b48458474..5a3138e436d83515fd60fdffc8a9d51798175e57 100644
--- a/chrome/browser/extensions/api/system_display/display_info_provider.cc
+++ b/chrome/browser/extensions/api/system_display/display_info_provider.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/api/system_display/display_info_provider.h"
+#include "base/lazy_instance.h"
#include "base/strings/string_number_conversions.h"
#include "ui/gfx/display.h"
#include "ui/gfx/screen.h"
@@ -27,11 +28,9 @@ int RotationToDegrees(gfx::Display::Rotation rotation) {
return 0;
}
-// Creates new DisplayUnitInfo struct for |display| and adds it at the end of
-// |list|.
+// Creates new DisplayUnitInfo struct for |display|.
extensions::api::system_display::DisplayUnitInfo*
-CreateDisplayUnitInfo(const gfx::Display& display,
- int64 primary_display_id) {
+CreateDisplayUnitInfo(const gfx::Display& display, int64 primary_display_id) {
extensions::api::system_display::DisplayUnitInfo* unit =
new extensions::api::system_display::DisplayUnitInfo();
const gfx::Rect& bounds = display.bounds();
@@ -54,57 +53,39 @@ CreateDisplayUnitInfo(const gfx::Display& display,
} // namespace
-DisplayInfoProvider::DisplayInfoProvider() {
-}
+static base::LazyInstance<scoped_ptr<DisplayInfoProvider> >
Hongbo Min 2013/09/05 08:43:36 Why not directly use DisplayInfoProvider instead o
Haojian Wu 2013/09/05 08:52:22 If uing DisplayInfoProvider directly, how to set a
+ g_display_info_provider = LAZY_INSTANCE_INITIALIZER;
-DisplayInfoProvider::~DisplayInfoProvider() {
-}
+DisplayInfoProvider::DisplayInfoProvider() {}
-// Static member intialization.
-base::LazyInstance<scoped_refptr<DisplayInfoProvider > >
- DisplayInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER;
+DisplayInfoProvider::~DisplayInfoProvider() {}
-const DisplayInfo& DisplayInfoProvider::display_info() const {
- return info_;
+DisplayInfoProvider* DisplayInfoProvider::Get() {
+ if (g_display_info_provider.Get().get() == NULL)
+ g_display_info_provider.Get() = scoped_ptr<DisplayInfoProvider>(
+ new DisplayInfoProvider);
+ return g_display_info_provider.Get().get();
}
void DisplayInfoProvider::InitializeForTesting(
- scoped_refptr<DisplayInfoProvider> provider) {
- DCHECK(provider.get() != NULL);
- provider_.Get() = provider;
-}
-
-void DisplayInfoProvider::RequestInfo(const RequestInfoCallback& callback) {
- bool success = QueryInfo();
-
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE,
- base::Bind(callback, success));
+ DisplayInfoProvider* display_info_provider) {
+ g_display_info_provider.Get() = scoped_ptr<DisplayInfoProvider>(
+ display_info_provider);
}
-#if !defined(OS_WIN)
-bool DisplayInfoProvider::QueryInfo() {
- info_.clear();
-
+DisplayInfo DisplayInfoProvider::GetAllDisplaysInfo() {
// TODO(scottmg): Native is wrong http://crbug.com/133312
gfx::Screen* screen = gfx::Screen::GetNativeScreen();
int64 primary_id = screen->GetPrimaryDisplay().id();
std::vector<gfx::Display> displays = screen->GetAllDisplays();
+ DisplayInfo all_displays;
for (int i = 0; i < screen->GetNumDisplays(); ++i) {
linked_ptr<extensions::api::system_display::DisplayUnitInfo> unit(
CreateDisplayUnitInfo(displays[i], primary_id));
UpdateDisplayUnitInfoForPlatform(displays[i], unit.get());
- info_.push_back(unit);
+ all_displays.push_back(unit);
}
- return true;
-}
-#endif
-
-// static
-DisplayInfoProvider* DisplayInfoProvider::Get() {
- if (provider_.Get().get() == NULL)
- provider_.Get() = new DisplayInfoProvider();
- return provider_.Get();
+ return all_displays;
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698