Changeset 29357 for platform

Show
Ignore:
Timestamp:
01/31/09 23:59:04 (4 years ago)
Author:
thorikawa
Message:

*accesskey対応
*overlay.js内のHTML加工処理を各キャリア毎のjsファイルに外だし

Location:
platform/firefox/FireMobileSimulator/trunk/src/chrome/content
Files:
6 added
3 modified

Legend:

Unmodified
Added
Removed
  • platform/firefox/FireMobileSimulator/trunk/src/chrome/content/firefoxOverlay.xul

    r27918 r29357  
    3333        <script type="application/x-javascript" src="mpc/softbank.js"></script> 
    3434        <script type="application/x-javascript" src="mpc.js"></script> 
     35        <script type="application/x-javascript" src="contentHandler/common.js"></script> 
     36        <script type="application/x-javascript" src="contentHandler/docomo.js"></script> 
     37        <script type="application/x-javascript" src="contentHandler/au.js"></script> 
     38        <script type="application/x-javascript" src="contentHandler/softbank.js"></script> 
     39        <script type="application/x-javascript" src="contentHandler.js"></script> 
    3540 
    3641        <stringbundleset id="stringbundleset"> 
  • platform/firefox/FireMobileSimulator/trunk/src/chrome/content/mpc.js

    r27271 r29357  
    2929firemobilesimulator.mpc.factoryMap[firemobilesimulator.common.carrier.SOFTBANK] = firemobilesimulator.mpc.softbank; 
    3030 
    31 firemobilesimulator.mpc.factory = function(carrier) { 
     31firemobilesimulator.mpc.factory = function (carrier) { 
    3232        return new firemobilesimulator.mpc.factoryMap[carrier]; 
    3333}; 
  • platform/firefox/FireMobileSimulator/trunk/src/chrome/content/overlay.js

    r29300 r29357  
    195195                        return; 
    196196                } 
    197                 //if (!ndDocument.body) { 
    198                 //      dump("[msim]body is null\n"); 
    199                 //      return; 
    200                 //} 
    201  
    202                 if (ndDocument.body) { 
    203                         //フォントを等幅に統一 
    204                         ndDocument.body.style.fontFamily = "monospace"; 
    205  
    206                         //表示領域サイズの制御(現在は横幅のみ) 
    207                         var forceScreenWidth = firemobilesimulator.common.pref 
    208                                         .getBoolPref("msim.config.general.force-screen-width"); 
    209                         var forceScreenHeight = firemobilesimulator.common.pref 
    210                                         .getBoolPref("msim.config.general.force-screen-height"); 
    211  
    212                         if (forceScreenWidth) { 
    213                                 var width = firemobilesimulator.common.pref 
    214                                                 .copyUnicharPref("msim.devicelist." + id + ".screen-width") 
    215                                                 || firemobilesimulator.common.pref 
    216                                                                 .copyUnicharPref("msim.config.general.screen-width-default"); 
    217                                 ndDocument.body.style.width = width + "px"; 
    218                                 ndDocument.body.style.border = "2px solid black"; 
    219                         } 
    220                 } 
    221197 
    222198                // Firefoxの埋め込み表示Content-Typeは、自動的にDOMに変換されている為、除外する。 
     
    226202                } 
    227203 
    228                 if (firemobilesimulator.common.carrier.AU == carrier) { 
    229                         // HDML暫定対応 
    230                         var hdmls = ndDocument.getElementsByTagName("hdml"); 
    231                         if (hdmls.length >= 1) { 
    232                                 var nodisplays = hdmls[0].getElementsByTagName("nodisplay"); 
    233                                 for (var i = 0; i < nodisplays.length; i++) { 
    234                                         var actions = nodisplays[i].getElementsByTagName("action"); 
    235                                         for (var j = 0; j < actions.length; j++) { 
    236                                                 var task = actions[j].getAttribute("task"); 
    237                                                 var dest = actions[j].getAttribute("dest"); 
    238                                                 if (task.toUpperCase() == "GO" && dest) { 
    239                                                         dump("[msim]Debug : hdml go <" + dest + ">\n"); 
    240                                                         ndDocument.location.href = dest; 
    241                                                         return; 
    242                                                 } 
    243                                         } 
    244                                 } 
    245                         } 
    246  
    247                         // WML暫定対応 
    248                         var oneventTags = ndDocument.getElementsByTagName("wml:onevent"); 
    249                         for (var i = 0; i < oneventTags.length; i++) { 
    250                                 dump("wml:onevent found:" + i + "\n"); 
    251                                 var onevent = oneventTags[i]; 
    252                                 var type = onevent.getAttribute("type"); 
    253                                 if (type == "onenterforward") { 
    254                                         var goTags = onevent.getElementsByTagName("wml:go"); 
    255                                         for (var j = 0; j < goTags.length; j++) { 
    256                                                 dump("wml:go found:" + j + "\n"); 
    257                                                 var go = goTags[j]; 
    258                                                 var href = go.getAttribute("href"); 
    259                                                 if (href) { 
    260                                                         dump("onenterforward go:" + href + "\n"); 
    261                                                         ndDocument.location.href = href; 
    262                                                 } 
    263                                         } 
    264                                 } 
    265                         } 
    266                         var wmlAnchorTags = ndDocument.getElementsByTagName("wml:anchor"); 
    267                         for (var i = 0; i < wmlAnchorTags.length; i++) { 
    268                                 var anchor = wmlAnchorTags[i]; 
    269                                 var spawnTags = anchor.getElementsByTagName("wml:spawn"); 
    270                                 for (var j = 0; j < spawnTags.length; j++) { 
    271                                         var spawn = spawnTags[j]; 
    272                                         var href = spawn.getAttribute("href"); 
    273                                         if (href) { 
    274                                                 dump("wml:anchor->wml:spawn found. set link:" + href 
    275                                                                 + "\n"); 
    276                                                 // spawn.addEventListener("click", 
    277                                                 // function() {ndDocument.location.href=href;}, 
    278                                                 // false); 
    279                                                 spawn.innerHTML = '<a href="' + href + '">' 
    280                                                                 + spawn.innerHTML + "</a>"; 
    281                                         } 
    282                                 } 
    283                         } 
    284  
    285                         //auのみDOMロード後に絵文字変換を行う 
    286                         var pictogramConverterEnabled = firemobilesimulator.common.pref 
    287                                         .getBoolPref("msim.config." + carrier 
    288                                                         + ".pictogram.enabled"); 
    289                         if (pictogramConverterEnabled) { 
    290                                 dump("[msim]convert pictogram in overlay.js\n"); 
    291                                 var mpc = firemobilesimulator.mpc.factory(carrier); 
    292                                 mpc.setImagePath("chrome://msim/content/emoji"); 
    293                                 var imgs = ndDocument.getElementsByTagName("img"); 
    294                                 for (var i = 0; i < imgs.length; i++) { 
    295                                         var iconno = imgs[i].getAttribute("localsrc") 
    296                                                         || imgs[i].getAttribute("icon"); 
    297                                         if (iconno && !isNaN(iconno)) { 
    298                                                 imgs[i].setAttribute("src", mpc.getImageSrc(parseInt( 
    299                                                                                 iconno, 10))); 
    300                                         } else if (iconno) { 
    301                                                 iconno = mpc.getIconNumFromIconName("_" + iconno); 
    302                                                 if (iconno) { 
    303                                                         imgs[i] 
    304                                                                         .setAttribute("src", mpc 
    305                                                                                                         .getImageSrc(iconno)); 
    306                                                 } 
    307                                         } 
    308  
    309                                 } 
    310                         } 
    311                          
    312                         //accesskey対応 
    313                         ndDocument.addEventListener("keyup", function (e) { 
    314                                 var anchorTags = this.getElementsByTagName("a"); 
    315                                 for (var i = 0; i < anchorTags.length; i++) { 
    316                                         var anchorTag = anchorTags[i]; 
    317                                         var accesskey = anchorTag.getAttribute("accesskey"); 
    318                                         if (accesskey && accesskey.match(/^(\d|\*|\#)$/)) { 
    319                                                 accesskey = accesskey.charCodeAt(0); 
    320                                                 if(e.keyCode == accesskey){ 
    321                                                         anchorTag.focus(); 
    322                                                         var evt = document.createEvent("MouseEvents"); 
    323                                                         evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    324                                                         anchorTag.dispatchEvent(evt); 
    325                                                 } 
    326                                         }        
    327                                 } 
    328                         }, false); 
    329                 } 
    330  
    331                 if (firemobilesimulator.common.carrier.DOCOMO == carrier) { 
    332  
    333                         var setUtnFunction = function(e) { 
    334                                 dump("[msim]click utn\n"); 
    335                                 if (true == confirm(firemobilesimulator.overlay.strings 
    336                                                 .getString("msim_utnConfirmation"))) { 
    337                                         firemobilesimulator.common.pref.setBoolPref( 
    338                                                         "msim.temp.utnflag", true); 
    339                                 } 
    340                                 return true; 
    341                         }; 
    342  
    343                         var setLcsFunction = function(e) { 
    344                                 dump("[msim]click lcs\n"); 
    345                                 if (true == confirm(firemobilesimulator.overlay.strings 
    346                                                 .getString("msim_lcsConfirmation"))) { 
    347                                         firemobilesimulator.common.pref.setBoolPref( 
    348                                                         "msim.temp.lcsflag", true); 
    349                                         return true; 
    350                                 } else { 
    351                                         return false; 
    352                                 } 
    353                         }; 
    354  
    355                         firemobilesimulator.common.pref.setBoolPref("msim.temp.utnflag", 
    356                                         false); 
    357                         firemobilesimulator.common.pref.setBoolPref("msim.temp.lcsflag", 
    358                                         false); 
    359  
    360                         var anchorTags = ndDocument.getElementsByTagName("a"); 
    361                         for (var i = 0; i < anchorTags.length; i++) { 
    362                                 var anchorTag = anchorTags[i]; 
    363                                 var utn = anchorTag.getAttribute("utn"); 
    364                                 if (null != utn) { 
    365                                         anchorTag.addEventListener("click", setUtnFunction, false); 
    366                                 } 
    367  
    368                                 var lcs = anchorTag.getAttribute("lcs"); 
    369                                 if (null != lcs) { 
    370                                         dump("setlcs for a tag\n"); 
    371                                         anchorTag.addEventListener("click", setLcsFunction, false); 
    372                                 } 
    373                         } 
    374  
    375                         //accesskey対応 
    376                         ndDocument.addEventListener("keyup", function (e) { 
    377                                 var anchorTags = this.getElementsByTagName("a"); 
    378                                 for (var i = 0; i < anchorTags.length; i++) { 
    379                                         var anchorTag = anchorTags[i]; 
    380                                         var accesskey = anchorTag.getAttribute("accesskey"); 
    381                                         if (accesskey && accesskey.match(/^(\d|\*|\#)$/)) { 
    382                                                 accesskey = accesskey.charCodeAt(0); 
    383                                                 if(e.keyCode == accesskey){ 
    384                                                         anchorTag.focus(); 
    385                                                         var evt = document.createEvent("MouseEvents"); 
    386                                                         evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    387                                                         anchorTag.dispatchEvent(evt); 
    388                                                 } 
    389                                         }        
    390                                 } 
    391                         }, false); 
    392                                                  
    393                         // formのUTN送信 
    394                         // uid=NULLGWDOCOMOのPOST送信 
    395                         // オープンiエリアの場合のメソッドを強制的にGETに書き換え 
    396                         // ##本当はhttp-on-modify-requestで書き換えたい## 
    397                         var formTags = ndDocument.getElementsByTagName("form"); 
    398                         for (var i = 0; i < formTags.length; i++) { 
    399                                 var formTag = formTags[i]; 
    400  
    401                                 // UTNセット 
    402                                 var utn = formTag.getAttribute("utn"); 
    403                                 if (null != utn) { 
    404                                         formTag.addEventListener("submit", setUtnFunction, false); 
    405                                 } 
    406  
    407                                 var lcs = formTag.getAttribute("lcs"); 
    408                                 if (null != lcs) { 
    409                                         dump("setlcs for form tag\n"); 
    410                                         formTag.addEventListener("submit", setLcsFunction, false); 
    411                                 } 
    412  
    413                                 // オープンiエリアの場合のメソッドを強制的にGETに書き換え 
    414                                 var action = formTag.getAttribute("action"); 
    415                                 if (action && action == "http://w1m.docomo.ne.jp/cp/iarea") { 
    416                                         formTag.setAttribute("method", "GET"); 
    417                                 } 
    418  
    419                                 // uid=NULLGWDOCOMOのPOST送信 
    420                                 var method = formTag.getAttribute("method"); 
    421                                 if (method && method.toUpperCase() == "POST") { 
    422                                         var inputTags = formTag.getElementsByTagName("input"); 
    423                                         for (var j = 0; j < inputTags.length; j++) { 
    424                                                 var inputTag = inputTags[j]; 
    425                                                 var key = inputTag.getAttribute("name"); 
    426                                                 var value = inputTag.value; 
    427                                                 if (key && value && key.toUpperCase() == "UID" 
    428                                                                 && value.toUpperCase() == "NULLGWDOCOMO") { 
    429                                                         dump("replace uid\n"); 
    430                                                         var uid = firemobilesimulator.common.pref 
    431                                                                         .copyUnicharPref("msim.config.DC.uid"); 
    432                                                         inputTag.value = uid; 
    433                                                 } 
    434                                         } 
    435                                 } 
    436                         } 
    437                 } 
    438                 if (firemobilesimulator.common.carrier.SOFTBANK == carrier) { 
    439                         //accesskey対応 
    440                         ndDocument.addEventListener("keyup", function (e) { 
    441                                 var anchorTags = this.getElementsByTagName("a"); 
    442                                 for (var i = 0; i < anchorTags.length; i++) { 
    443                                         var anchorTag = anchorTags[i]; 
    444                                         var accesskey = anchorTag.getAttribute("accesskey") || anchorTag.getAttribute("directkey"); 
    445                                         if (accesskey && accesskey.match(/^(\d|\*|\#)$/)) { 
    446                                                 accesskey = accesskey.charCodeAt(0); 
    447                                                 if(e.keyCode == accesskey){ 
    448                                                         anchorTag.focus(); 
    449                                                         var evt = document.createEvent("MouseEvents"); 
    450                                                         evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    451                                                         anchorTag.dispatchEvent(evt); 
    452                                                 } 
    453                                         }        
    454                                 } 
    455                         }, false); 
    456                 } 
     204                var contentHandler = firemobilesimulator.contentHandler.factory(carrier); 
     205                contentHandler && contentHandler.filter(ndDocument, id); 
    457206        } 
    458207};