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

Side by Side Diff: chrome/browser/chromeos/cros/mount_library.cc

Issue 1142005: Mocks for all libcros elements (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/cros/mount_library.h" 5 #include "chrome/browser/chromeos/cros/mount_library.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "chrome/browser/chrome_thread.h" 9 #include "chrome/browser/chrome_thread.h"
10 #include "chrome/browser/chromeos/cros/cros_library.h" 10 #include "chrome/browser/chromeos/cros/cros_library.h"
11 11
12 // Allows InvokeLater without adding refcounting. This class is a Singleton and 12 // Allows InvokeLater without adding refcounting. This class is a Singleton and
13 // won't be deleted until it's last InvokeLater is run. 13 // won't be deleted until it's last InvokeLater is run.
14 template <> 14 template <>
15 struct RunnableMethodTraits<chromeos::MountLibrary> { 15 struct RunnableMethodTraits<chromeos::MountLibraryImpl> {
16 void RetainCallee(chromeos::MountLibrary* obj) {} 16 void RetainCallee(chromeos::MountLibraryImpl* obj) {}
17 void ReleaseCallee(chromeos::MountLibrary* obj) {} 17 void ReleaseCallee(chromeos::MountLibraryImpl* obj) {}
18 }; 18 };
19 19
20 namespace chromeos { 20 namespace chromeos {
21 21
22 // static 22 void MountLibraryImpl::AddObserver(Observer* observer) {
23 MountLibrary* MountLibrary::Get() {
24 return Singleton<MountLibrary>::get();
25 }
26
27 void MountLibrary::AddObserver(Observer* observer) {
28 observers_.AddObserver(observer); 23 observers_.AddObserver(observer);
29 } 24 }
30 25
31 void MountLibrary::RemoveObserver(Observer* observer) { 26 void MountLibraryImpl::RemoveObserver(Observer* observer) {
32 observers_.RemoveObserver(observer); 27 observers_.RemoveObserver(observer);
33 } 28 }
34 29
35 void MountLibrary::ParseDisks(const MountStatus& status) { 30 void MountLibraryImpl::ParseDisks(const MountStatus& status) {
36 disks_.clear(); 31 disks_.clear();
37 for (int i = 0; i < status.size; i++) { 32 for (int i = 0; i < status.size; i++) {
38 std::string path; 33 std::string path;
39 std::string mountpath; 34 std::string mountpath;
40 std::string systempath; 35 std::string systempath;
41 if (status.disks[i].path != NULL) { 36 if (status.disks[i].path != NULL) {
42 path = status.disks[i].path; 37 path = status.disks[i].path;
43 } 38 }
44 if (status.disks[i].mountpath != NULL) { 39 if (status.disks[i].mountpath != NULL) {
45 mountpath = status.disks[i].mountpath; 40 mountpath = status.disks[i].mountpath;
46 } 41 }
47 if (status.disks[i].systempath != NULL) { 42 if (status.disks[i].systempath != NULL) {
48 systempath = status.disks[i].systempath; 43 systempath = status.disks[i].systempath;
49 } 44 }
50 disks_.push_back(Disk(path, mountpath, systempath)); 45 disks_.push_back(Disk(path, mountpath, systempath));
51 } 46 }
52 } 47 }
53 48
54 MountLibrary::MountLibrary() { 49 MountLibraryImpl::MountLibraryImpl() : mount_status_connection_(NULL) {
55 if (CrosLibrary::EnsureLoaded()) { 50 if (CrosLibrary::Get()->EnsureLoaded()) {
56 Init(); 51 Init();
57 } else { 52 } else {
58 LOG(ERROR) << "Cros Library has not been loaded"; 53 LOG(ERROR) << "Cros Library has not been loaded";
59 } 54 }
60 } 55 }
61 56
62 MountLibrary::~MountLibrary() { 57 MountLibraryImpl::~MountLibraryImpl() {
63 if (CrosLibrary::EnsureLoaded()) { 58 if (mount_status_connection_) {
64 DisconnectMountStatus(mount_status_connection_); 59 DisconnectMountStatus(mount_status_connection_);
65 } 60 }
66 } 61 }
67 62
68 // static 63 // static
69 void MountLibrary::MountStatusChangedHandler(void* object, 64 void MountLibraryImpl::MountStatusChangedHandler(void* object,
70 const MountStatus& status, 65 const MountStatus& status,
71 MountEventType evt, 66 MountEventType evt,
72 const char* path) { 67 const char* path) {
73 MountLibrary* mount = static_cast<MountLibrary*>(object); 68 MountLibraryImpl* mount = static_cast<MountLibraryImpl*>(object);
74 std::string devicepath = path; 69 std::string devicepath = path;
75 mount->ParseDisks(status); 70 mount->ParseDisks(status);
76 mount->UpdateMountStatus(status, evt, devicepath); 71 mount->UpdateMountStatus(status, evt, devicepath);
77 } 72 }
78 73
79 void MountLibrary::Init() { 74 void MountLibraryImpl::Init() {
80 // Getting the monitor status so that the daemon starts up. 75 // Getting the monitor status so that the daemon starts up.
81 MountStatus* mount = RetrieveMountInformation(); 76 MountStatus* mount = RetrieveMountInformation();
82 FreeMountStatus(mount); 77 FreeMountStatus(mount);
83 78
84 mount_status_connection_ = MonitorMountStatus( 79 mount_status_connection_ = MonitorMountStatus(
85 &MountStatusChangedHandler, this); 80 &MountStatusChangedHandler, this);
86 } 81 }
87 82
88 void MountLibrary::UpdateMountStatus(const MountStatus& status, 83 void MountLibraryImpl::UpdateMountStatus(const MountStatus& status,
89 MountEventType evt, 84 MountEventType evt,
90 const std::string& path) { 85 const std::string& path) {
91 // Make sure we run on UI thread. 86 // Make sure we run on UI thread.
92 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); 87 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
93 88
94 FOR_EACH_OBSERVER(Observer, observers_, MountChanged(this, evt, path)); 89 FOR_EACH_OBSERVER(Observer, observers_, MountChanged(this, evt, path));
95 } 90 }
96 91
97 } // namespace chromeos 92 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/mount_library.h ('k') | chrome/browser/chromeos/cros/network_library.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698