Changeset 51631 in webkit
- Timestamp:
- Dec 3, 2009 4:46:59 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r51627 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * inspector/settings-set-get-expected.txt: Added. 10 * inspector/settings-set-get.html: Added. 11 1 12 2009-12-03 Oliver Hunt <oliver@apple.com> 2 13 -
trunk/WebCore/ChangeLog
r51630 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 Test: inspector/settings-set-get.html 10 11 * WebCore.Inspector.exp: 12 * bindings/js/JSInspectorFrontendHostCustom.cpp: 13 * bindings/v8/custom/V8InspectorFrontendHostCustom.cpp: 14 * inspector/InspectorClient.h: 15 * inspector/InspectorController.cpp: 16 (WebCore::InspectorController::~InspectorController): 17 (WebCore::InspectorController::setting): 18 (WebCore::InspectorController::setSetting): 19 (WebCore::InspectorController::setWindowVisible): 20 (WebCore::InspectorController::attachWindow): 21 (WebCore::InspectorController::setAttachedWindowHeight): 22 (WebCore::InspectorController::storeLastActivePanel): 23 (WebCore::InspectorController::scriptObjectReady): 24 (WebCore::InspectorController::showWindow): 25 (WebCore::InspectorController::enableResourceTracking): 26 (WebCore::InspectorController::disableResourceTracking): 27 (WebCore::InspectorController::ensureResourceTrackingSettingsLoaded): 28 (WebCore::InspectorController::enableProfiler): 29 (WebCore::InspectorController::disableProfiler): 30 (WebCore::InspectorController::enableDebuggerFromFrontend): 31 (WebCore::InspectorController::disableDebugger): 32 * inspector/InspectorController.h: 33 * inspector/InspectorFrontendHost.cpp: 34 (WebCore::InspectorFrontendHost::setting): 35 (WebCore::InspectorFrontendHost::setSetting): 36 * inspector/InspectorFrontendHost.h: 37 * inspector/InspectorFrontendHost.idl: 38 * loader/EmptyClients.h: 39 (WebCore::EmptyInspectorClient::populateSetting): 40 (WebCore::EmptyInspectorClient::storeSetting): 41 1 42 2009-12-03 Ben Murdoch <benm@google.com> 2 43 -
trunk/WebCore/WebCore.Inspector.exp
r51072 r51631 1 __ZN7WebCore19InspectorController10setSettingERKNS_6StringE RKNS0_7SettingE1 __ZN7WebCore19InspectorController10setSettingERKNS_6StringES3_ 2 2 __ZN7WebCore19InspectorController12attachWindowEv 3 3 __ZN7WebCore19InspectorController12detachWindowEv -
trunk/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp
r51528 r51631 90 90 } 91 91 92 JSValue JSInspectorFrontendHost::setting(ExecState* exec, const ArgList& args)93 {94 if (args.size() < 1)95 return jsUndefined();96 97 String key = args.at(0).toString(exec);98 if (exec->hadException())99 return jsUndefined();100 101 InspectorController* ic = impl()->inspectorController();102 if (!ic)103 return jsUndefined();104 const InspectorController::Setting& setting = ic->setting(key);105 106 switch (setting.type()) {107 default:108 case InspectorController::Setting::NoType:109 return jsUndefined();110 case InspectorController::Setting::StringType:111 return jsString(exec, setting.string());112 case InspectorController::Setting::DoubleType:113 return jsNumber(exec, setting.doubleValue());114 case InspectorController::Setting::IntegerType:115 return jsNumber(exec, setting.integerValue());116 case InspectorController::Setting::BooleanType:117 return jsBoolean(setting.booleanValue());118 case InspectorController::Setting::StringVectorType: {119 MarkedArgumentBuffer stringsArray;120 const Vector<String>& strings = setting.stringVector();121 const unsigned length = strings.size();122 for (unsigned i = 0; i < length; ++i)123 stringsArray.append(jsString(exec, strings[i]));124 return constructArray(exec, stringsArray);125 }126 }127 }128 129 JSValue JSInspectorFrontendHost::setSetting(ExecState* exec, const ArgList& args)130 {131 if (args.size() < 2)132 return jsUndefined();133 134 String key = args.at(0).toString(exec);135 if (exec->hadException())136 return jsUndefined();137 138 InspectorController::Setting setting;139 140 JSValue value = args.at(1);141 if (value.isUndefined() || value.isNull()) {142 // Do nothing. The setting is already NoType.143 ASSERT(setting.type() == InspectorController::Setting::NoType);144 } else if (value.isString())145 setting.set(value.toString(exec));146 else if (value.isNumber())147 setting.set(value.toNumber(exec));148 else if (value.isBoolean())149 setting.set(value.toBoolean(exec));150 else {151 JSArray* jsArray = asArray(value);152 if (!jsArray)153 return jsUndefined();154 Vector<String> strings;155 for (unsigned i = 0; i < jsArray->length(); ++i) {156 String item = jsArray->get(exec, i).toString(exec);157 if (exec->hadException())158 return jsUndefined();159 strings.append(item);160 }161 setting.set(strings);162 }163 164 if (exec->hadException())165 return jsUndefined();166 167 InspectorController* ic = impl()->inspectorController();168 if (ic)169 ic->setSetting(key, setting);170 171 return jsUndefined();172 }173 174 92 } // namespace WebCore 175 93 -
trunk/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
r51528 r51631 85 85 } 86 86 87 CALLBACK_FUNC_DECL(InspectorFrontendHostSetting)88 {89 INC_STATS("InspectorFrontendHost.setting()");90 91 if (args.Length() < 1)92 return v8::Undefined();93 94 String key = toWebCoreStringWithNullCheck(args[0]);95 if (key.isEmpty())96 return v8::Undefined();97 98 InspectorFrontendHost* inspectorHost = V8DOMWrapper::convertToNativeObject<InspectorFrontendHost>(V8ClassIndex::INSPECTORFRONTENDHOST, args.Holder());99 InspectorController* ic = inspectorHost->inspectorController();100 if (!ic)101 return v8::Undefined();102 const InspectorController::Setting& setting = ic->setting(key);103 104 switch (setting.type()) {105 default:106 case InspectorController::Setting::NoType:107 return v8::Undefined();108 case InspectorController::Setting::StringType:109 return v8String(setting.string());110 case InspectorController::Setting::DoubleType:111 return v8::Number::New(setting.doubleValue());112 case InspectorController::Setting::IntegerType:113 return v8::Number::New(setting.integerValue());114 case InspectorController::Setting::BooleanType:115 return v8Boolean(setting.booleanValue());116 case InspectorController::Setting::StringVectorType: {117 const Vector<String>& strings = setting.stringVector();118 v8::Local<v8::Array> stringsArray = v8::Array::New(strings.size());119 const unsigned length = strings.size();120 for (unsigned i = 0; i < length; ++i)121 stringsArray->Set(v8::Number::New(i), v8String(strings[i]));122 return stringsArray;123 }124 }125 }126 127 CALLBACK_FUNC_DECL(InspectorFrontendHostSetSetting)128 {129 INC_STATS("InspectorFrontendHost.setSetting()");130 if (args.Length() < 2)131 return v8::Undefined();132 133 String key = toWebCoreStringWithNullCheck(args[0]);134 if (key.isEmpty())135 return v8::Undefined();136 137 InspectorController::Setting setting;138 139 v8::Local<v8::Value> value = args[1];140 if (value->IsUndefined() || value->IsNull()) {141 // Do nothing. The setting is already NoType.142 ASSERT(setting.type() == InspectorController::Setting::NoType);143 } else if (value->IsString())144 setting.set(toWebCoreStringWithNullCheck(value));145 else if (value->IsNumber())146 setting.set(value->NumberValue());147 else if (value->IsBoolean())148 setting.set(value->BooleanValue());149 else if (value->IsArray()) {150 v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(value);151 Vector<String> strings;152 for (unsigned i = 0; i < v8Array->Length(); ++i) {153 String item = toWebCoreString(v8Array->Get(v8::Integer::New(i)));154 if (item.isEmpty())155 return v8::Undefined();156 strings.append(item);157 }158 setting.set(strings);159 } else160 return v8::Undefined();161 162 InspectorFrontendHost* inspectorHost = V8DOMWrapper::convertToNativeObject<InspectorFrontendHost>(V8ClassIndex::INSPECTORFRONTENDHOST, args.Holder());163 InspectorController* ic = inspectorHost->inspectorController();164 if (ic)165 inspectorHost->inspectorController()->setSetting(key, setting);166 167 return v8::Undefined();168 }169 170 87 } // namespace WebCore -
trunk/WebCore/inspector/InspectorClient.h
r46558 r51631 60 60 virtual void inspectedURLChanged(const String& newURL) = 0; 61 61 62 virtual void populateSetting(const String& key, InspectorController::Setting&) = 0; 63 virtual void storeSetting(const String& key, const InspectorController::Setting&) = 0; 64 virtual void removeSetting(const String& key) = 0; 62 virtual void populateSetting(const String& key, String* value) = 0; 63 virtual void storeSetting(const String& key, const String& value) = 0; 65 64 66 65 virtual void inspectorWindowObjectCleared() = 0; -
trunk/WebCore/inspector/InspectorController.cpp
r51601 r51631 122 122 123 123 static unsigned s_inspectorControllerCount; 124 static HashMap<String, InspectorController::Setting*>* s_settingCache;125 124 126 125 InspectorController::InspectorController(Page* page, InspectorClient* client) … … 169 168 --s_inspectorControllerCount; 170 169 171 if (!s_inspectorControllerCount && s_settingCache) {172 deleteAllValues(*s_settingCache);173 delete s_settingCache;174 s_settingCache = 0;175 }176 177 170 releaseDOMAgent(); 178 171 … … 205 198 } 206 199 207 const InspectorController::Setting& InspectorController::setting(const String& key) const 208 { 209 if (!s_settingCache) 210 s_settingCache = new HashMap<String, Setting*>; 211 212 if (Setting* cachedSetting = s_settingCache->get(key)) 213 return *cachedSetting; 214 215 Setting* newSetting = new Setting; 216 s_settingCache->set(key, newSetting); 217 218 m_client->populateSetting(key, *newSetting); 219 220 return *newSetting; 221 } 222 223 void InspectorController::setSetting(const String& key, const Setting& setting) 224 { 225 if (setting.type() == Setting::NoType) { 226 if (s_settingCache) { 227 Setting* cachedSetting = s_settingCache->get(key); 228 if (cachedSetting) { 229 s_settingCache->remove(key); 230 delete cachedSetting; 231 } 232 } 233 234 m_client->removeSetting(key); 235 return; 236 } 237 238 if (!s_settingCache) 239 s_settingCache = new HashMap<String, Setting*>; 240 241 if (Setting* cachedSetting = s_settingCache->get(key)) 242 *cachedSetting = setting; 243 else 244 s_settingCache->set(key, new Setting(setting)); 245 246 m_client->storeSetting(key, setting); 200 String InspectorController::setting(const String& key) const 201 { 202 Settings::iterator it = m_settings.find(key); 203 if (it != m_settings.end()) 204 return it->second; 205 206 String value; 207 m_client->populateSetting(key, &value); 208 m_settings.set(key, value); 209 return value; 210 } 211 212 void InspectorController::setSetting(const String& key, const String& value) 213 { 214 m_settings.set(key, value); 215 m_client->storeSetting(key, value); 247 216 } 248 217 … … 324 293 325 294 if (m_showAfterVisible == CurrentPanel) { 326 Setting lastActivePanelSetting = setting(lastActivePanelSettingName); 327 if (lastActivePanelSetting.type() == Setting::StringType) 328 m_showAfterVisible = specialPanelForJSName(lastActivePanelSetting.string()); 329 else 330 m_showAfterVisible = ElementsPanel; 295 String lastActivePanelSetting = setting(lastActivePanelSettingName); 296 m_showAfterVisible = specialPanelForJSName(lastActivePanelSetting); 331 297 } 332 298 … … 440 406 m_client->attachWindow(); 441 407 442 Setting attachedHeight = setting(inspectorAttachedHeightName); 443 unsigned preferredHeight = attachedHeight.type() == Setting::IntegerType ? attachedHeight.integerValue() : defaultAttachedHeight; 408 String attachedHeight = setting(inspectorAttachedHeightName); 409 bool success = true; 410 int height = attachedHeight.toInt(&success); 411 unsigned preferredHeight = success ? height : defaultAttachedHeight; 444 412 445 413 // We need to constrain the window height here in case the user has resized the inspected page's window so that … … 471 439 unsigned attachedHeight = constrainedAttachedWindowHeight(height, totalHeight); 472 440 473 setSetting(inspectorAttachedHeightName, S etting(attachedHeight));441 setSetting(inspectorAttachedHeightName, String::number(attachedHeight)); 474 442 475 443 m_client->setAttachedWindowHeight(attachedHeight); … … 478 446 void InspectorController::storeLastActivePanel(const String& panelName) 479 447 { 480 setSetting(lastActivePanelSettingName, Setting(panelName));448 setSetting(lastActivePanelSettingName, panelName); 481 449 } 482 450 … … 550 518 551 519 #if ENABLE(JAVASCRIPT_DEBUGGER) 552 S etting debuggerEnabled = setting(debuggerEnabledSettingName);553 if (debuggerEnabled .type() == Setting::BooleanType && debuggerEnabled.booleanValue())520 String debuggerEnabled = setting(debuggerEnabledSettingName); 521 if (debuggerEnabled == "true") 554 522 enableDebugger(); 555 S etting profilerEnabled = setting(profilerEnabledSettingName);556 if (profilerEnabled .type() == Setting::BooleanType && profilerEnabled.booleanValue())523 String profilerEnabled = setting(profilerEnabledSettingName); 524 if (profilerEnabled == "true") 557 525 enableProfiler(); 558 526 #endif … … 646 614 m_client->showWindow(); 647 615 648 Setting attachedHeight = setting(inspectorAttachedHeightName); 649 unsigned preferredHeight = attachedHeight.type() == Setting::IntegerType ? attachedHeight.integerValue() : defaultAttachedHeight; 616 String attachedHeight = setting(inspectorAttachedHeightName); 617 bool success = true; 618 int height = attachedHeight.toInt(&success); 619 unsigned preferredHeight = success ? height : defaultAttachedHeight; 650 620 651 621 // This call might not go through (if the window starts out detached), but if the window is initially created attached, … … 1078 1048 1079 1049 if (always) 1080 setSetting(resourceTrackingEnabledSettingName, Setting(true));1050 setSetting(resourceTrackingEnabledSettingName, "true"); 1081 1051 1082 1052 if (m_resourceTrackingEnabled) … … 1098 1068 1099 1069 if (always) 1100 setSetting(resourceTrackingEnabledSettingName, Setting(false));1070 setSetting(resourceTrackingEnabledSettingName, "false"); 1101 1071 1102 1072 ASSERT(m_inspectedPage); … … 1112 1082 m_resourceTrackingSettingsLoaded = true; 1113 1083 1114 S etting resourceTracking = setting(resourceTrackingEnabledSettingName);1115 if (resourceTracking .type() == Setting::BooleanType && resourceTracking.booleanValue())1084 String resourceTracking = setting(resourceTrackingEnabledSettingName); 1085 if (resourceTracking == "true") 1116 1086 m_resourceTrackingEnabled = true; 1117 1087 } … … 1501 1471 { 1502 1472 if (always) 1503 setSetting(profilerEnabledSettingName, Setting(true));1473 setSetting(profilerEnabledSettingName, "true"); 1504 1474 1505 1475 if (m_profilerEnabled) … … 1518 1488 { 1519 1489 if (always) 1520 setSetting(profilerEnabledSettingName, Setting(false));1490 setSetting(profilerEnabledSettingName, "false"); 1521 1491 1522 1492 if (!m_profilerEnabled) … … 1534 1504 { 1535 1505 if (always) 1536 setSetting(debuggerEnabledSettingName, Setting(true));1506 setSetting(debuggerEnabledSettingName, "true"); 1537 1507 1538 1508 ASSERT(m_inspectedPage); … … 1567 1537 1568 1538 if (always) 1569 setSetting(debuggerEnabledSettingName, Setting(false));1539 setSetting(debuggerEnabledSettingName, "false"); 1570 1540 1571 1541 ASSERT(m_inspectedPage); -
trunk/WebCore/inspector/InspectorController.h
r51528 r51631 111 111 } SpecialPanels; 112 112 113 struct Setting {114 enum Type {115 NoType, StringType, StringVectorType, DoubleType, IntegerType, BooleanType116 };117 118 Setting()119 : m_type(NoType)120 {121 }122 123 explicit Setting(bool value)124 : m_type(BooleanType)125 {126 m_simpleContent.m_boolean = value;127 }128 129 explicit Setting(unsigned value)130 : m_type(IntegerType)131 {132 m_simpleContent.m_integer = value;133 }134 135 explicit Setting(const String& value)136 : m_type(StringType)137 {138 m_string = value;139 }140 141 Type type() const { return m_type; }142 143 String string() const { ASSERT(m_type == StringType); return m_string; }144 const Vector<String>& stringVector() const { ASSERT(m_type == StringVectorType); return m_stringVector; }145 double doubleValue() const { ASSERT(m_type == DoubleType); return m_simpleContent.m_double; }146 long integerValue() const { ASSERT(m_type == IntegerType); return m_simpleContent.m_integer; }147 bool booleanValue() const { ASSERT(m_type == BooleanType); return m_simpleContent.m_boolean; }148 149 void set(const String& value) { m_type = StringType; m_string = value; }150 void set(const Vector<String>& value) { m_type = StringVectorType; m_stringVector = value; }151 void set(double value) { m_type = DoubleType; m_simpleContent.m_double = value; }152 void set(long value) { m_type = IntegerType; m_simpleContent.m_integer = value; }153 void set(bool value) { m_type = BooleanType; m_simpleContent.m_boolean = value; }154 155 private:156 Type m_type;157 158 String m_string;159 Vector<String> m_stringVector;160 161 union {162 double m_double;163 long m_integer;164 bool m_boolean;165 } m_simpleContent;166 };167 113 InspectorController(Page*, InspectorClient*); 168 114 ~InspectorController(); … … 179 125 Page* inspectedPage() const { return m_inspectedPage; } 180 126 181 const Setting&setting(const String& key) const;182 void setSetting(const String& key, const S etting&);127 String setting(const String& key) const; 128 void setSetting(const String& key, const String& value); 183 129 184 130 void inspect(Node*); … … 398 344 HashMap<String, ScriptValue> m_idToWrappedObject; 399 345 ObjectGroupsMap m_objectGroups; 400 401 346 long m_lastBoundObjectId; 347 348 typedef HashMap<String, String> Settings; 349 mutable Settings m_settings; 350 402 351 Vector<pair<long, String> > m_pendingEvaluateTestCommands; 403 352 #if ENABLE(JAVASCRIPT_DEBUGGER) -
trunk/WebCore/inspector/InspectorFrontendHost.cpp
r51534 r51631 189 189 } 190 190 191 String InspectorFrontendHost::setting(const String& key) 192 { 193 return m_inspectorController ? m_inspectorController->setting(key) : ""; 194 } 195 196 void InspectorFrontendHost::setSetting(const String& key, const String& value) 197 { 198 if (m_inspectorController) 199 m_inspectorController->setSetting(key, value); 200 } 201 191 202 } // namespace WebCore 192 203 -
trunk/WebCore/inspector/InspectorFrontendHost.h
r51528 r51631 71 71 bool addSourceToFrame(const String& mimeType, const String& source, Node* frame); 72 72 73 String setting(const String& key); 74 void setSetting(const String& key, const String& value); 75 73 76 private: 74 77 InspectorFrontendHost(InspectorController* inspectorController, InspectorClient* client); -
trunk/WebCore/inspector/InspectorFrontendHost.idl
r51528 r51631 52 52 boolean addSourceToFrame(in DOMString mimeType, in DOMString sourceValue, in Node frame); 53 53 54 DOMString setting(in DOMString key); 55 void setSetting(in DOMString key, in DOMString value); 56 54 57 [Custom] void search(in Node node, in DOMString query); 55 [Custom] DOMObject setting(in DOMString key);56 [Custom] void setSetting(in DOMString key, in DOMObject value);57 58 }; 58 59 } -
trunk/WebCore/loader/EmptyClients.h
r51629 r51631 483 483 virtual void inspectedURLChanged(const String&) { } 484 484 485 virtual void populateSetting(const String&, InspectorController::Setting&) { } 486 virtual void storeSetting(const String&, const InspectorController::Setting&) { } 487 virtual void removeSetting(const String&) { } 485 virtual void populateSetting(const String&, String*) { } 486 virtual void storeSetting(const String&, const String&) { } 488 487 489 488 virtual void inspectorWindowObjectCleared() { } -
trunk/WebKit/cf/ChangeLog
r42680 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/WebInspectorClientCF.cpp: 10 (WebInspectorClient::populateSetting): 11 (WebInspectorClient::storeSetting): 12 1 13 2009-04-20 Steve Falkenburg <sfalken@apple.com> 2 14 -
trunk/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
r42680 r51631 65 65 } 66 66 67 void WebInspectorClient::populateSetting(const String& key, InspectorController::Setting&setting)67 void WebInspectorClient::populateSetting(const String& key, String* setting) 68 68 { 69 69 RetainPtr<CFStringRef> preferencesKey(AdoptCF, createKeyForPreferences(key)); … … 75 75 CFTypeID type = CFGetTypeID(value.get()); 76 76 if (type == CFStringGetTypeID()) 77 setting.set(static_cast<String>(static_cast<CFStringRef>(value.get())));77 *setting = static_cast<String>(static_cast<CFStringRef>(value.get())); 78 78 else if (type == CFBooleanGetTypeID()) 79 setting.set(static_cast<bool>(CFBooleanGetValue(static_cast<CFBooleanRef>(value.get())))); 80 else if (type == CFNumberGetTypeID()) { 81 CFNumberRef number = static_cast<CFNumberRef>(value.get()); 82 if (CFNumberIsFloatType(number)) { 83 double doubleNumber = 0.0; 84 CFNumberGetValue(static_cast<CFNumberRef>(value.get()), kCFNumberDoubleType, &doubleNumber); 85 setting.set(doubleNumber); 86 } else { 87 long longNumber = 0; 88 CFNumberGetValue(static_cast<CFNumberRef>(value.get()), kCFNumberLongType, &longNumber); 89 setting.set(longNumber); 90 } 91 } else if (type == CFArrayGetTypeID()) { 92 Vector<String> strings; 93 94 CFArrayRef array = static_cast<CFArrayRef>(value.get()); 95 unsigned length = CFArrayGetCount(array); 96 for (unsigned i = 0; i < length; ++i) { 97 CFStringRef string = static_cast<CFStringRef>(CFArrayGetValueAtIndex(array, i)); 98 if (CFGetTypeID(string) == CFStringGetTypeID()) 99 strings.append(static_cast<String>(static_cast<CFStringRef>(string))); 100 } 101 102 setting.set(strings); 103 } else 104 ASSERT_NOT_REACHED(); 79 *setting = static_cast<bool>(CFBooleanGetValue(static_cast<CFBooleanRef>(value.get()))) ? "true" : "false"; 80 else 81 *setting = ""; 105 82 } 106 83 107 void WebInspectorClient::storeSetting(const String& key, const InspectorController::Setting& setting)84 void WebInspectorClient::storeSetting(const String& key, const String& setting) 108 85 { 109 86 RetainPtr<CFPropertyListRef> objectToStore; 110 111 switch (setting.type()) { 112 default: 113 case InspectorController::Setting::NoType: 114 ASSERT_NOT_REACHED(); 115 break; 116 case InspectorController::Setting::StringType: 117 objectToStore.adoptCF(setting.string().createCFString()); 118 break; 119 case InspectorController::Setting::BooleanType: 120 objectToStore = (setting.booleanValue() ? kCFBooleanTrue : kCFBooleanFalse); 121 break; 122 123 case InspectorController::Setting::DoubleType: { 124 double value = setting.doubleValue(); 125 objectToStore.adoptCF(CFNumberCreate(0, kCFNumberDoubleType, &value)); 126 break; 127 } 128 129 case InspectorController::Setting::IntegerType: { 130 long value = setting.integerValue(); 131 objectToStore.adoptCF(CFNumberCreate(0, kCFNumberLongType, &value)); 132 break; 133 } 134 135 case InspectorController::Setting::StringVectorType: { 136 const Vector<String>& strings = setting.stringVector(); 137 const unsigned length = strings.size(); 138 139 RetainPtr<CFMutableArrayRef> array(AdoptCF, CFArrayCreateMutable(0, length, &kCFTypeArrayCallBacks)); 140 141 for (unsigned i = 0; i < length; ++i) { 142 RetainPtr<CFStringRef> string(AdoptCF, strings[i].createCFString()); 143 CFArraySetValueAtIndex(array.get(), i, string.get()); 144 } 145 146 objectToStore = array; 147 break; 148 } 149 } 150 87 objectToStore.adoptCF(setting.createCFString()); 151 88 ASSERT(objectToStore); 152 89 … … 154 91 CFPreferencesSetAppValue(preferencesKey.get(), objectToStore.get(), kCFPreferencesCurrentApplication); 155 92 } 156 157 void WebInspectorClient::removeSetting(const String& key)158 {159 RetainPtr<CFStringRef> preferencesKey(AdoptCF, createKeyForPreferences(key));160 CFPreferencesSetAppValue(preferencesKey.get(), 0, kCFPreferencesCurrentApplication);161 } -
trunk/WebKit/chromium/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * src/InspectorClientImpl.cpp: 10 (WebKit::InspectorClientImpl::hiddenPanels): 11 (WebKit::InspectorClientImpl::populateSetting): 12 (WebKit::InspectorClientImpl::storeSetting): 13 (WebKit::InspectorClientImpl::loadSettings): 14 (WebKit::InspectorClientImpl::saveSettings): 15 * src/InspectorClientImpl.h: 16 1 17 2009-12-03 Ben Murdoch <benm@google.com> 2 18 -
trunk/WebKit/chromium/src/InspectorClientImpl.cpp
r50743 r51631 144 144 String InspectorClientImpl::hiddenPanels() 145 145 { 146 // Enumerate tabs that are currently disabled.147 return " scripts,profiles,databases";148 } 149 150 void InspectorClientImpl::populateSetting(const String& key, InspectorController::Setting& setting)146 notImplemented(); 147 return ""; 148 } 149 150 void InspectorClientImpl::populateSetting(const String& key, String* value) 151 151 { 152 152 loadSettings(); 153 153 if (m_settings->contains(key)) 154 setting= m_settings->get(key);155 } 156 157 void InspectorClientImpl::storeSetting(const String& key, const InspectorController::Setting& setting)154 *value = m_settings->get(key); 155 } 156 157 void InspectorClientImpl::storeSetting(const String& key, const String& value) 158 158 { 159 159 loadSettings(); 160 m_settings->set(key, setting); 161 saveSettings(); 162 } 163 164 void InspectorClientImpl::removeSetting(const String& key) 165 { 166 loadSettings(); 167 m_settings->remove(key); 160 m_settings->set(key, value); 168 161 saveSettings(); 169 162 } … … 194 187 String name = decodeURLEscapeSequences(tokens[0]); 195 188 String type = tokens[1]; 196 InspectorController::Setting setting; 197 bool ok = true; 189 String setting; 198 190 if (type == "string") 199 setting.set(decodeURLEscapeSequences(tokens[2])); 200 else if (type == "double") 201 setting.set(tokens[2].toDouble(&ok)); 202 else if (type == "integer") 203 setting.set(static_cast<long>(tokens[2].toInt(&ok))); 191 setting = decodeURLEscapeSequences(tokens[2]); 204 192 else if (type == "boolean") 205 setting .set(tokens[2] == "true");193 setting = tokens[2]; 206 194 else 207 195 continue; 208 196 209 if (ok) 210 m_settings->set(name, setting); 197 m_settings->set(name, setting); 211 198 } 212 199 } … … 216 203 String data; 217 204 for (SettingsMap::iterator it = m_settings->begin(); it != m_settings->end(); ++it) { 218 String entry;219 InspectorController::Setting value = it->second;220 205 String name = encodeWithURLEscapeSequences(it->first); 221 switch (value.type()) { 222 case InspectorController::Setting::StringType: 223 entry = String::format( 224 "%s:string:%s", 225 name.utf8().data(), 226 encodeWithURLEscapeSequences(value.string()).utf8().data()); 227 break; 228 case InspectorController::Setting::DoubleType: 229 entry = String::format( 230 "%s:double:%f", 231 name.utf8().data(), 232 value.doubleValue()); 233 break; 234 case InspectorController::Setting::IntegerType: 235 entry = String::format( 236 "%s:integer:%ld", 237 name.utf8().data(), 238 value.integerValue()); 239 break; 240 case InspectorController::Setting::BooleanType: 241 entry = String::format("%s:boolean:%s", 242 name.utf8().data(), 243 value.booleanValue() ? "true" : "false"); 244 break; 245 case InspectorController::Setting::StringVectorType: 246 notImplemented(); 247 break; 248 default: 249 ASSERT_NOT_REACHED(); 250 break; 251 } 206 String value = it->second; 207 String entry = String::format( 208 "%s:string:%s", 209 name.utf8().data(), 210 encodeWithURLEscapeSequences(value).utf8().data()); 252 211 data.append(entry); 253 212 data.append("\n"); -
trunk/WebKit/chromium/src/InspectorClientImpl.h
r50743 r51631 60 60 virtual void populateSetting( 61 61 const WebCore::String& key, 62 WebCore:: InspectorController::Setting&);62 WebCore::String* value); 63 63 virtual void storeSetting( 64 64 const WebCore::String& key, 65 const WebCore::InspectorController::Setting&); 66 virtual void removeSetting(const WebCore::String& key); 65 const WebCore::String& value); 67 66 virtual void inspectorWindowObjectCleared(); 68 67 … … 74 73 WebViewImpl* m_inspectedWebView; 75 74 76 typedef HashMap<WebCore::String, WebCore:: InspectorController::Setting> SettingsMap;75 typedef HashMap<WebCore::String, WebCore::String> SettingsMap; 77 76 OwnPtr<SettingsMap> m_settings; 78 77 }; -
trunk/WebKit/gtk/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/InspectorClientGtk.cpp: 10 (WebKit::InspectorClient::populateSetting): 11 (WebKit::InspectorClient::storeSetting): 12 * WebCoreSupport/InspectorClientGtk.h: 13 1 14 2009-12-03 Ben Murdoch <benm@google.com> 2 15 -
trunk/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
r50245 r51631 205 205 } 206 206 207 208 void InspectorClient::populateSetting(const String& key, InspectorController::Setting& setting) 209 { 210 notImplemented(); 211 } 212 213 void InspectorClient::storeSetting(const String& key, const InspectorController::Setting& setting) 214 { 215 notImplemented(); 216 } 217 218 void InspectorClient::removeSetting(const String& key) 219 { 220 notImplemented(); 221 } 222 223 } 224 207 void InspectorClient::populateSetting(const String& key, String* value) 208 { 209 notImplemented(); 210 } 211 212 void InspectorClient::storeSetting(const String& key, const String& value) 213 { 214 notImplemented(); 215 } 216 217 } 218 -
trunk/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
r46558 r51631 67 67 virtual void inspectedURLChanged(const WebCore::String& newURL); 68 68 69 virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&); 70 virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&); 71 virtual void removeSetting(const WebCore::String& key); 69 virtual void populateSetting(const WebCore::String& key, WebCore::String* value); 70 virtual void storeSetting(const WebCore::String& key, const WebCore::String& value); 72 71 73 72 virtual void inspectorWindowObjectCleared(); -
trunk/WebKit/haiku/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/InspectorClientHaiku.cpp: 10 (WebCore::InspectorClientHaiku::populateSetting): 11 (WebCore::InspectorClientHaiku::storeSetting): 12 * WebCoreSupport/InspectorClientHaiku.h: 13 1 14 2009-12-03 Ben Murdoch <benm@google.com> 2 15 -
trunk/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
r46558 r51631 106 106 } 107 107 108 void InspectorClientHaiku::populateSetting(const String& key, InspectorController::Setting&)108 void InspectorClientHaiku::populateSetting(const String& key, String* value) 109 109 { 110 110 notImplemented(); 111 111 } 112 112 113 void InspectorClientHaiku::storeSetting(const String& key, const InspectorController::Setting&) 114 { 115 notImplemented(); 116 } 117 118 void InspectorClientHaiku::removeSetting(const String& key) 113 void InspectorClientHaiku::storeSetting(const String& key, const String& value) 119 114 { 120 115 notImplemented(); -
trunk/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
r46558 r51631 62 62 virtual void inspectedURLChanged(const String& newURL); 63 63 64 virtual void populateSetting(const String& key, InspectorController::Setting&); 65 virtual void storeSetting(const String& key, const InspectorController::Setting&); 66 virtual void removeSetting(const String& key); 64 virtual void populateSetting(const WebCore::String& key, WebCore::String* value); 65 virtual void storeSetting(const WebCore::String& key, const WebCore::String& value); 67 66 68 67 virtual void inspectorWindowObjectCleared(); -
trunk/WebKit/mac/ChangeLog
r51630 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/WebInspectorClient.h: 10 * WebCoreSupport/WebInspectorClient.mm: 11 (-[WebInspectorWindowController showWindow:]): 12 (-[WebInspectorWindowController attach]): 13 (-[WebInspectorWindowController detach]): 14 1 15 2009-12-03 Ben Murdoch <benm@google.com> 2 16 -
trunk/WebKit/mac/WebCoreSupport/WebInspectorClient.h
r46558 r51631 63 63 virtual void inspectedURLChanged(const WebCore::String& newURL); 64 64 65 virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&); 66 virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&); 67 virtual void removeSetting(const WebCore::String& key); 65 virtual void populateSetting(const WebCore::String& key, WebCore::String* value); 66 virtual void storeSetting(const WebCore::String& key, const WebCore::String& value); 68 67 69 68 virtual void inspectorWindowObjectCleared(); -
trunk/WebKit/mac/WebCoreSupport/WebInspectorClient.mm
r49232 r51631 328 328 329 329 // If no preference is set - default to an attached window. This is important for inspector LayoutTests. 330 InspectorController::Setting shouldAttach = [_inspectedWebView page]->inspectorController()->setting(inspectorStartsAttachedName);331 _shouldAttach = (shouldAttach.type() == InspectorController::Setting::BooleanType) ? shouldAttach.booleanValue() : true;330 String shouldAttach = [_inspectedWebView page]->inspectorController()->setting(inspectorStartsAttachedName); 331 _shouldAttach = shouldAttach != "false"; 332 332 333 333 if (_shouldAttach) { … … 363 363 return; 364 364 365 [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(true));365 [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, "true"); 366 366 _movingWindows = YES; 367 367 … … 377 377 return; 378 378 379 [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(false));379 [_inspectedWebView page]->inspectorController()->setSetting(inspectorStartsAttachedName, "false"); 380 380 _movingWindows = YES; 381 381 -
trunk/WebKit/qt/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/InspectorClientQt.cpp: 10 (WebCore::InspectorClientQt::populateSetting): 11 (WebCore::InspectorClientQt::storeSetting): 12 (WebCore::variantToSetting): 13 (WebCore::settingToVariant): 14 * WebCoreSupport/InspectorClientQt.h: 15 1 16 2009-12-03 Ben Murdoch <benm@google.com> 2 17 -
trunk/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
r50344 r51631 51 51 static const QLatin1String settingStorageTypeSuffix(".type"); 52 52 53 static InspectorController::Setting variantToSetting(const QVariant& qvariant);54 static QVariant settingToVariant(const InspectorController::Setting& icSetting);53 static String variantToSetting(const QVariant& qvariant); 54 static QVariant settingToVariant(const String& value); 55 55 56 56 class InspectorClientWebPage : public QWebPage { … … 170 170 } 171 171 172 void InspectorClientQt::populateSetting(const String& key, InspectorController::Setting&setting)172 void InspectorClientQt::populateSetting(const String& key, String* setting) 173 173 { 174 174 QSettings qsettings; … … 184 184 QVariant storedValue = qsettings.value(settingKey); 185 185 storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); 186 setting = variantToSetting(storedValue);187 } 188 189 void InspectorClientQt::storeSetting(const String& key, const InspectorController::Setting& setting)186 *setting = variantToSetting(storedValue); 187 } 188 189 void InspectorClientQt::storeSetting(const String& key, const String& setting) 190 190 { 191 191 QSettings qsettings; … … 202 202 } 203 203 204 void InspectorClientQt::removeSetting(const String&) 205 { 206 notImplemented(); 207 } 208 209 static InspectorController::Setting variantToSetting(const QVariant& qvariant) 210 { 211 InspectorController::Setting retVal; 204 static String variantToSetting(const QVariant& qvariant) 205 { 206 String retVal; 212 207 213 208 switch (qvariant.type()) { 214 209 case QVariant::Bool: 215 retVal.set(qvariant.toBool()); 216 break; 217 case QVariant::Double: 218 retVal.set(qvariant.toDouble()); 219 break; 220 case QVariant::Int: 221 retVal.set((long)qvariant.toInt()); 222 break; 210 retVal = qvariant.toBool() ? "true" : "false"; 223 211 case QVariant::String: 224 retVal.set(qvariant.toString()); 225 break; 226 case QVariant::StringList: { 227 QStringList qsList = qvariant.toStringList(); 228 int listCount = qsList.count(); 229 Vector<String> vector(listCount); 230 for (int i = 0; i < listCount; ++i) 231 vector[i] = qsList[i]; 232 retVal.set(vector); 233 break; 234 } 212 retVal = qvariant.toString(); 235 213 } 236 214 … … 238 216 } 239 217 240 static QVariant settingToVariant(const InspectorController::Setting& icSetting)218 static QVariant settingToVariant(const String& setting) 241 219 { 242 220 QVariant retVal; 243 244 switch (icSetting.type()) { 245 case InspectorController::Setting::StringType: 246 retVal.setValue(static_cast<QString>(icSetting.string())); 247 break; 248 case InspectorController::Setting::StringVectorType: { 249 const Vector<String>& vector = icSetting.stringVector(); 250 Vector<String>::const_iterator iter; 251 QStringList qsList; 252 for (iter = vector.begin(); iter != vector.end(); ++iter) 253 qsList << *iter; 254 retVal.setValue(qsList); 255 break; 256 } 257 case InspectorController::Setting::DoubleType: 258 retVal.setValue(icSetting.doubleValue()); 259 break; 260 case InspectorController::Setting::IntegerType: 261 retVal.setValue((int)icSetting.integerValue()); 262 break; 263 case InspectorController::Setting::BooleanType: 264 retVal.setValue(icSetting.booleanValue()); 265 break; 266 } 267 221 retVal.setValue(static_cast<QString>(setting)); 268 222 return retVal; 269 223 } -
trunk/WebKit/qt/WebCoreSupport/InspectorClientQt.h
r48288 r51631 67 67 virtual void inspectedURLChanged(const String& newURL); 68 68 69 virtual void populateSetting(const String& key, InspectorController::Setting&); 70 virtual void storeSetting(const String& key, const InspectorController::Setting&); 71 virtual void removeSetting(const String& key); 69 virtual void populateSetting(const String& key, String* value); 70 virtual void storeSetting(const String& key, const String& value); 72 71 73 72 virtual void inspectorWindowObjectCleared(); -
trunk/WebKit/win/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebCoreSupport/WebInspectorClient.cpp: 10 (WebInspectorClient::attachWindow): 11 (WebInspectorClient::detachWindow): 12 (WebInspectorClient::showWindowWithoutNotifications): 13 * WebCoreSupport/WebInspectorClient.h: 14 1 15 2009-12-03 Ben Murdoch <benm@google.com> 2 16 -
trunk/WebKit/win/WebCoreSupport/WebInspectorClient.cpp
r49232 r51631 234 234 return; 235 235 236 m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(true));236 m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, "true"); 237 237 238 238 closeWindowWithoutNotifications(); … … 245 245 return; 246 246 247 m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, InspectorController::Setting(false));247 m_inspectedWebView->page()->inspectorController()->setSetting(inspectorStartsAttachedName, "false"); 248 248 249 249 closeWindowWithoutNotifications(); … … 351 351 352 352 // If no preference is set - default to an attached window. This is important for inspector LayoutTests. 353 InspectorController::Setting shouldAttach = m_inspectedWebView->page()->inspectorController()->setting(inspectorStartsAttachedName);354 m_shouldAttachWhenShown = shouldAttach .type() == InspectorController::Setting::BooleanType ? shouldAttach.booleanValue() : true;353 String shouldAttach = m_inspectedWebView->page()->inspectorController()->setting(inspectorStartsAttachedName); 354 m_shouldAttachWhenShown = shouldAttach != "false"; 355 355 356 356 if (!m_shouldAttachWhenShown) { -
trunk/WebKit/win/WebCoreSupport/WebInspectorClient.h
r46558 r51631 67 67 virtual void inspectedURLChanged(const WebCore::String& newURL); 68 68 69 virtual void populateSetting(const WebCore::String& key, WebCore::InspectorController::Setting&); 70 virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&); 71 virtual void removeSetting(const WebCore::String& key); 69 virtual void populateSetting(const WebCore::String& key, WebCore::String* value); 70 virtual void storeSetting(const WebCore::String& key, const WebCore::String& value); 72 71 73 72 virtual void inspectorWindowObjectCleared(); -
trunk/WebKit/wx/ChangeLog
r51629 r51631 1 2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> 2 3 Reviewed by Timothy Hatcher. 4 5 Web Inspector: Simplify the settings support in inspector controller. 6 7 https://bugs.webkit.org/show_bug.cgi?id=32076 8 9 * WebKitSupport/InspectorClientWx.cpp: 10 (WebCore::InspectorClientWx::populateSetting): 11 (WebCore::InspectorClientWx::storeSetting): 12 * WebKitSupport/InspectorClientWx.h: 13 1 14 2009-12-03 Ben Murdoch <benm@google.com> 2 15 -
trunk/WebKit/wx/WebKitSupport/InspectorClientWx.cpp
r46780 r51631 106 106 } 107 107 108 void InspectorClientWx::populateSetting(const String& key, InspectorController::Setting&setting)108 void InspectorClientWx::populateSetting(const String& key, String* setting) 109 109 { 110 110 notImplemented(); 111 111 } 112 112 113 void InspectorClientWx::storeSetting(const String& key, const InspectorController::Setting& setting) 114 { 115 notImplemented(); 116 } 117 118 void InspectorClientWx::removeSetting(const String& key) 113 void InspectorClientWx::storeSetting(const String& key, const String& setting) 119 114 { 120 115 notImplemented(); -
trunk/WebKit/wx/WebKitSupport/InspectorClientWx.h
r46780 r51631 61 61 virtual void inspectedURLChanged(const String& newURL); 62 62 63 virtual void populateSetting(const String& key, InspectorController::Setting&); 64 virtual void storeSetting(const String& key, const InspectorController::Setting&); 65 virtual void removeSetting(const String& key); 66 63 virtual void populateSetting(const String& key, String* value); 64 virtual void storeSetting(const String& key, const String& value); 65 67 66 virtual void inspectorWindowObjectCleared(); 68 67 };
Note: See TracChangeset
for help on using the changeset viewer.