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

Side by Side Diff: remoting/client/plugin/chromoting_scriptable_object.cc

Issue 6736009: Measure bandwidth for chromoting video channel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: done Created 9 years, 8 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
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.h ('k') | remoting/remoting.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "remoting/client/plugin/chromoting_scriptable_object.h" 5 #include "remoting/client/plugin/chromoting_scriptable_object.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "ppapi/cpp/var.h" 9 #include "ppapi/cpp/var.h"
10 #include "remoting/client/client_config.h" 10 #include "remoting/client/client_config.h"
11 #include "remoting/client/chromoting_stats.h"
11 #include "remoting/client/plugin/chromoting_instance.h" 12 #include "remoting/client/plugin/chromoting_instance.h"
12 #include "remoting/client/plugin/pepper_xmpp_proxy.h" 13 #include "remoting/client/plugin/pepper_xmpp_proxy.h"
13 14
14 using pp::Var; 15 using pp::Var;
15 16
16 namespace remoting { 17 namespace remoting {
17 18
18 namespace { 19 namespace {
19 20
20 const char kConnectionInfoUpdate[] = "connectionInfoUpdate"; 21 const char kConnectionInfoUpdate[] = "connectionInfoUpdate";
21 const char kDebugInfo[] = "debugInfo"; 22 const char kDebugInfo[] = "debugInfo";
22 const char kDesktopHeight[] = "desktopHeight"; 23 const char kDesktopHeight[] = "desktopHeight";
23 const char kDesktopWidth[] = "desktopWidth"; 24 const char kDesktopWidth[] = "desktopWidth";
24 const char kDesktopSizeUpdate[] = "desktopSizeUpdate"; 25 const char kDesktopSizeUpdate[] = "desktopSizeUpdate";
25 const char kLoginChallenge[] = "loginChallenge"; 26 const char kLoginChallenge[] = "loginChallenge";
26 const char kSendIq[] = "sendIq"; 27 const char kSendIq[] = "sendIq";
27 const char kQualityAttribute[] = "quality"; 28 const char kQualityAttribute[] = "quality";
28 const char kStatusAttribute[] = "status"; 29 const char kStatusAttribute[] = "status";
30 const char kVideoBandwidthAttribute[] = "videoBandwidth";
29 31
30 } // namespace 32 } // namespace
31 33
32 ChromotingScriptableObject::ChromotingScriptableObject( 34 ChromotingScriptableObject::ChromotingScriptableObject(
33 ChromotingInstance* instance) 35 ChromotingInstance* instance)
34 : instance_(instance) { 36 : instance_(instance) {
35 } 37 }
36 38
37 ChromotingScriptableObject::~ChromotingScriptableObject() { 39 ChromotingScriptableObject::~ChromotingScriptableObject() {
38 } 40 }
(...skipping 23 matching lines...) Expand all
62 64
63 // Debug info to display. 65 // Debug info to display.
64 AddAttribute(kConnectionInfoUpdate, Var()); 66 AddAttribute(kConnectionInfoUpdate, Var());
65 AddAttribute(kDebugInfo, Var()); 67 AddAttribute(kDebugInfo, Var());
66 AddAttribute(kDesktopSizeUpdate, Var()); 68 AddAttribute(kDesktopSizeUpdate, Var());
67 AddAttribute(kLoginChallenge, Var()); 69 AddAttribute(kLoginChallenge, Var());
68 AddAttribute(kSendIq, Var()); 70 AddAttribute(kSendIq, Var());
69 AddAttribute(kDesktopWidth, Var(0)); 71 AddAttribute(kDesktopWidth, Var(0));
70 AddAttribute(kDesktopHeight, Var(0)); 72 AddAttribute(kDesktopHeight, Var(0));
71 73
74 // Statistics.
75 AddAttribute(kVideoBandwidthAttribute, Var());
76
72 AddMethod("connect", &ChromotingScriptableObject::DoConnect); 77 AddMethod("connect", &ChromotingScriptableObject::DoConnect);
73 AddMethod("connectSandboxed", 78 AddMethod("connectSandboxed",
74 &ChromotingScriptableObject::DoConnectSandboxed); 79 &ChromotingScriptableObject::DoConnectSandboxed);
75 AddMethod("disconnect", &ChromotingScriptableObject::DoDisconnect); 80 AddMethod("disconnect", &ChromotingScriptableObject::DoDisconnect);
76 AddMethod("submitLoginInfo", &ChromotingScriptableObject::DoSubmitLogin); 81 AddMethod("submitLoginInfo", &ChromotingScriptableObject::DoSubmitLogin);
77 AddMethod("onIq", &ChromotingScriptableObject::DoOnIq); 82 AddMethod("onIq", &ChromotingScriptableObject::DoOnIq);
78 } 83 }
79 84
80 bool ChromotingScriptableObject::HasProperty(const Var& name, Var* exception) { 85 bool ChromotingScriptableObject::HasProperty(const Var& name, Var* exception) {
81 // TODO(ajwong): Check if all these name.is_string() sentinels are required. 86 // TODO(ajwong): Check if all these name.is_string() sentinels are required.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 return Var(); 124 return Var();
120 } 125 }
121 126
122 PropertyNameMap::const_iterator iter = property_names_.find(name.AsString()); 127 PropertyNameMap::const_iterator iter = property_names_.find(name.AsString());
123 128
124 // No property found. 129 // No property found.
125 if (iter == property_names_.end()) { 130 if (iter == property_names_.end()) {
126 return ScriptableObject::GetProperty(name, exception); 131 return ScriptableObject::GetProperty(name, exception);
127 } 132 }
128 133
134 // If this is a statistics attribute then return the value from
135 // ChromotingStats structure.
136 if (name.AsString() == kVideoBandwidthAttribute) {
137 return instance_->GetStats()->video_bandwidth()->Rate();
138 }
139
129 // TODO(ajwong): This incorrectly return a null object if a function 140 // TODO(ajwong): This incorrectly return a null object if a function
130 // property is requested. 141 // property is requested.
131 return properties_[iter->second].attribute; 142 return properties_[iter->second].attribute;
132 } 143 }
133 144
134 void ChromotingScriptableObject::GetAllPropertyNames( 145 void ChromotingScriptableObject::GetAllPropertyNames(
135 std::vector<Var>* properties, 146 std::vector<Var>* properties,
136 Var* exception) { 147 Var* exception) {
137 for (size_t i = 0; i < properties_.size(); i++) { 148 for (size_t i = 0; i < properties_.size(); i++) {
138 properties->push_back(Var(properties_[i].name)); 149 properties->push_back(Var(properties_[i].name));
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 *exception = Var("response_xml must be a string."); 412 *exception = Var("response_xml must be a string.");
402 return Var(); 413 return Var();
403 } 414 }
404 415
405 xmpp_proxy_->OnIq(args[0].AsString()); 416 xmpp_proxy_->OnIq(args[0].AsString());
406 417
407 return Var(); 418 return Var();
408 } 419 }
409 420
410 } // namespace remoting 421 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/plugin/chromoting_scriptable_object.h ('k') | remoting/remoting.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698