Set cursor to ALV objects from portal

Hi,
I am trying to pull a report from SEM cockpit by integrating it with portal.
For retrieving that report i need to select and click on a particular ALV OBJECT in that frame.I tried passing sy-ucomm as okcode from portal but it didnot workout as it is not selecting the report.
Any suggestions on how to do it?
Thanks in advance
Madhuri

Hi,
Thanks for the reply,
I am trying to run the job from "build registry search index" but it remains in "queue" state and its status is not changing.
I have confirmed process scheduler status by running another job from there and that job was executed/posted successfully but this job is still in queue state.
Can any one help me in this regard?

Similar Messages

  • Set cursor in ALV grid output

    Hi guys,
    I generated a report which gives out put in ALV grid.
    In the ALV grid output, I have some editable fields.
    Lets suppose, there are some editable fields with no data in it.
    I have userdefined pushbutton in Application toolbar, when I press the pushbutton the cursor should go to the empty field in the ALV grid output.
    Can this be possible through SET CURSOR statement?
    Thanks,
    Shivaa......

    Hi,
        You can set the cursor field on the output list that too for the output fields which are vissible on the screen only.
    syntax
    SET CURSOR 11 3.   ---> 11Coloumn and 3 line
    for dynamically setting cursor, first you have to search for the empty fields then set the cursor dynamically.
    look at this help document it might be helpful
    http://help.sap.com/saphelp_nw70/helpdata/EN/9f/dba47e35c111d1829f0000e829fbfe/content.htm
    Regards
    Bala KRishna

  • Set Cursor on ALV Grid

    i am trying to set the cursor on an ALV Grid display so that the field can be editted....
    LOOP AT lt_fieldnames INTO ls_fieldnames.
        IF NOT ls_fieldnames-colortab IS INITIAL.
          ls_row_no-row_id       = sy-tabix.
          ls_column_id-fieldname = 'VALUE'.
          EXIT.
        ENDIF.
      ENDLOOP.
    *--- Set focus to cell that contains error
    CALL METHOD grid_editmsg->set_current_cell_via_id
      EXPORTING
           is_column_id = ls_column_id
           is_row_no    = ls_row_no 
    the field is highlighted but i still have to click in the field to edit the contents....
    is there a method/fm i can use that makes the field directly editable????

    I also searched for this and i find a solution.
    CALL METHOD cl_gui_control=>set_focus
         EXPORTING
           control = gref_grid_menge.
    So even if this post is very old, probably it can help other devs to go further!

  • How to set variant for ALV grid from ABAP

    Hello,
    I have a program which displays some data with ALV grid. Then after some operation I would like to set different layout for the grid, but not by choosing it manually but by the program. I thought that it would be enough to use the method SET_VARIANT, so I'm setting DISVARIANT structure properly, using SET_VARIANT method and after that I'm calling REFRESH_TABLE_DISPLAY but layout is not changed. What else should I do? Is that possible?
    Best regards,
    Marcin

    Hi,
    Check this
    * While declaring select-options
    parameters: p_vari        like ltdx-variant.  " Layout
    * then add the following code in
    at selection-screen on value-request for p_vari.
      perform f_variant_f4 using p_vari.
    * Code for f_variant_f4
    form f_variant_f4 using  p_vari.
    * private variables
      data : v_exit    type c.
      clear gs_variantt.
      v_variant_save = 'U'.
      call function 'LVC_VARIANT_F4'
        exporting
          is_variant    = gs_variant
          i_save        = v_variant_save
        importing
          e_exit        = v_exit
          es_variant    = gs_variantt
        exceptions
          not_found     = 1
          program_error = 2
          others        = 3.
      if sy-subrc ne c_0.
        message i999(yscc) with text-064.    " No Layout Available for F4
      endif.
      if v_exit is initial.
        gs_variant-variant = gs_variantt-variant.
        p_vari             = gs_variantt-variant.
      endif.
    endform.                                 " F_variant_f4
    * In PBO
        call method grid1->set_table_for_first_display
          exporting
            is_layout                     = gs_layout
            is_variant                    = gs_variant
            i_save                        = 'A'
            it_toolbar_excluding          = i_exclude[]
          changing
            it_outtab                     = i_output[]
            it_fieldcatalog               = i_fieldcat[]
          exceptions
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
            others                        = 4.

  • How to set cursor to text field from message box in swing

    I am working Text Field validations in a swing application. when incorrect information is entred in text field a Message is displayed. When I click on OK button on message box I want to set the cursor position to that particular text field for which thet message is displayed.

    theOffendingTextfield.requestFocusInWindow();may need to be wrapped in a Swingutilities.invokeLater,
    and if you want the text highlighted (so you can just type in new text)
    theOffendingTextfield.requestFocusInWindow();
    theOffendingTextfield.selectAll();

  • How to set Cursor position in ALV

    Hi,
    i have an issue that how can i set cursor in alv grid.
    i am using alv function modules.
    if user enters wrong info (i have one input enabled filed) then i must show this row as first row and place the cursor in that wrong entry column.
    does anybody worked on this kind of issue..?if so,plz send me the example code
    Thanks

    I think that you have to use OO ALV and use
    CALL METHOD <ref.var. to CL_GUI_ALV_GRID > ->set_current_cell_via_id
       EXPORTING
          IS_ROW_ID    =   <structure of type LVC_S_ROW > ( obsolete )
          IS_COLUMN_ID =   <structure of type LVC_S_COL >
          IS_ROW_NO    =   <structure of type LVC_S_ROID >.
    Hopefully, you can find the object reference of you REUSE ALV by using FM 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    (But i never try it)
    Regards.

  • How to view file from portal?

    Hello All,
    The application i'm developing requires viewing documents linked to a SAP object from portal. I am able to checkin documents from portal ( using  'BAPI_DOCUMENT_CREATE2' ), but I have problem display/ viewing the document.
    EX: When a PO is displayed in portal, I should be able to view the documents attached to it if I click on the document number (created thru 'BAPI_DOCUMENT_CREATE2).
    Any kind of help is highly appreciated.
    Thanks,
    Chandra

    Hi Chandra,
    in case the DMS BAPIs are not sufficient for you, maybe the KM - DMS connector could help you here? In note 904558 and in the SDN at https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/webcontent/uuid/e08533ae-8f6d-2910-ba9f-e9a6a363ec35 [original link is broken] you see more. In general the DMS content is here mapped to the portal KM.
    Best regards,
    Martin

  • Set cursor alv grid (not using objects)

    I got a question on ALV GRID (not using objects), please let me know if you have pointers. Thanks.
    Output has 2 screens both has different contents. The output is generated using internal table1 and 2 and using FM  'REUSE_ALV_GRID_DISPLAY_LVC'  (both screen use same FM).
    First screen has multiple pages of output (say 10 pages). User scrolled page 5 and line 10 of first screen and then double clicked it takes to screen #2. After completion of screen #2, the back arrow should get back to page 5 and line 10 of screen #1. Currently the back arrow gets to screen#1 page 1 and line 1. How to remember the cursor position in alv grid and instruct the cursor to go there?
    Appreciate the input.
    Note: I tried "set cursor line n" with "Scroll" command but no luck. http://help.sap.com/saphelp_nw70/helpdata/EN/9f/dba47e35c111d1829f0000e829fbfe/content.htm

    Thanks for the inputs.
    FYI, I got it implemented using method  CALL METHOD <ref.var. to CL_GUI_ALV_GRID > ->set_current_cell_via_id
    The method is called by 'REUSE_ALV_GRID_DISPLAY_LVC' form 'PF_STATUS_SET' when the ALV grid output is presented each time.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_bypassing_buffer       = 'X'
          i_callback_program       = gc_repid
          i_callback_pf_status_set = 'PF_STATUS_SET'
          i_callback_user_command  = 'USER_COMMAND'
          is_layout_lvc            = lwa_layout
          it_fieldcat_lvc          = git_fc_lvc
          i_default                = ' '
        TABLES
          t_outtab                 = git_data
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      FORM alv_event_pf_status_set USING rt_extab                
                                 TYPE slis_t_extab.
      DATA lo_ref1 TYPE REF TO cl_gui_alv_grid.
    *Get the reference to class "lo_ref1" for the ALV report
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = lo_ref1.
    *set the focus of cursor in ALV
      CALL METHOD lo_ref1->set_current_cell_via_id
        EXPORTING
          is_row_no = gv_row. "row number where you want to focus the cursor
      ENDFORM.

  • Coping Portal objects from Test to production on different Domains

    I want to know if anyone besides my company uses separate domain environments to do development, QA, and production. How did you get around the object owner issues that come from this level of security. Did you have to Export OID objects from one environment, and import them into the other environments to get a common GUID? Do you use a common user to do development? I would like to hear some common/best practice advise if you have any.
    For those that want to understand the issues here is a little example:
    For this example, I am going to call my company Acme (I like this name). Acme uses a Sneaker method of security (Sneaker method means - To move data from one level to another, you must put in on a diskette, tape, or CD and put your sneakers on the floor and walk it to another location to install it.). While this is the most secure method out there to day, it makes working in development EXTREMELY difficult. Completely isolated environments require special concerns. I wanted to know if anyone out there does this now, and how they manage these issues.
    Domains:
    www.Acme.com
    www.QAAcme.com
    www.DevAcme.com
    When you do development on your site you login as a portal developer JSmith, or KJones, of BRight on the www.devacme.com domain. You build your Portal objects and custom stuff. Now you want to move it to QA, so they can test it and promote it to Production. You build your transport sets. You export using your UNIX script and get your file. You burn the file and the UNIX script to CD.
    You then take the CD to the www.QAAcme.com domain Portal server and login to that system as Oracle / OrcAdmin (God mode). You run the Import script as you normally would. <Error> This doesn't work completely because your user Jsmith is different on this domain and doesn't carry the same GUID in OID. While privileges and spelling are identical, the GUID's in OID differ and the domain names don’t match. (Problem - Separate domains and OID identities - objects without matching owner GUID's will not import.)
    When you check your stuff you realize that some or most of your work is missing, and all of the security that you placed on the objects is not working correctly either. Because domains are different, any OID users which you assigned permissions to are now not working at all. You will have to redo all the permissions work on this domain just like you did on the other domain. (Problem - there is no easy way to change domain names associated to OID users or group accounts, even if the names are EXACTLY the same. Permissions do not move over for users so assigning item level security is a waist of time since you will have to manually do all that work over again.)
    To correct then problems above, you go and export OID user objects like OrclAdmin, IAS_Admin, and a few others. You import these identities on each domain. Now what? Do you give developers 1 identity to do their work? Pass out the Admin passwords on Dev to all the developers to do as they please? Do you build a Dev User for each Developer you have and manage those ID's outside of your normal routine?
    This should draw a somewhat clear picture. There are more issues besides these. I left those out of this talk for now.
    If you have questions please let me know. I would like to hear input on this. Right now, I don't have any easy solutions, just a lot of extra work. Thank you in advance for any input.
    Frank

    Hi Frank,
    A very interesting question, which I never tried nor seen. Anyway, maybe I can try to give you a hand...
    I believe the major problem doesn't seem to be the GUID but rather the privileges of the users / groups within the Portal. I'm assuming that you really want that the users and groups privileges be assigned to the three Portals, 'cause you wanna test them or something like that... otherwise it would be a lot easier to assign them only to the Production machine - also what the Portal documentation encourages you to do (and never take them with the Portal Export / Import... ie, the Portal ACLs).
    In overview, what I think it might work, would be something like:-
    1. Export all the OID users / groups to LDIF files.
    2. Change the domains in the LDIF files to the Target Portal.
    3. Import all the OID users / groups to the Target Portal.
    4. Export with the Portal Export to a Transport Set.
    5. Export the Transport Set to a DMP.
    6. Import the DMP.
    7. Backup the Portal Target at this stage - ALWAYS!
    8. Before merging the DMP file the WWUTL_SEC_TX_PERSON$ and WWUTL_SEC_TX_GROUP$ tables need to be changed - DN (security is taking IDs of the users/groups internally to the Portal - so this should be fine).
    9. Merge the Transport Set within the Portal UI.
    Till point 8 it should be easy to be done... and you may check the Portal Configuration Guide over the 10.4.8 Migrating Users and Groups - http://download.oracle.com/docs/cd/B14099_19/portal.1014/b19305/cg_imex.htm
    On step 8 do something like the following:-
    -- groups (dn)
    update WWUTL_SEC_TX_GROUP$
    set dn=replace( dn, 'dc=dev_domain,dc=com', 'dc=prod_domain,dc=com' )
    update WWUTL_SEC_TX_GROUP$
    set dn_hash = wwsec_api_private.get_dn_hash( dn )
    -- users (dn)
    update WWUTL_SEC_TX_PERSON$
    set dn=replace( dn, 'dc=dev_domain,dc=com', 'dc=prod_domain,dc=com' )
    update WWUTL_SEC_TX_PERSON$
    set dn_hash = wwsec_api_private.get_dn_hash( dn)
    If you do have the opportunity to test this, I'd be much appreciated in knowing whether you've achieved to get this sorted out. And even if there is something I may be missing then you may come back with your questions as I'll try to answer them to my best knowledge.
    Alternatively, you can use the cloning notes within the Metalink website, what they do is a schema database export / import and there it IDs with be there. The only downside is that the export / import will do everything and Portal Export / Import is more flexible, ie, you may not be interested in bringging the whole Portal, but just a couple of pages or Page Groups.
    I hope it helps...
    Cheers,
    Pedro.
    PS - I hope all the above makes sense, but if not, just let me know (or detail me what do you want where I've failed to understand you).

  • How can I fill a table of objects from cursor with select * bulk collect???

    Hi All, I have a TYPE as OBJECT
    create or replace type dept2_o as object (
    deptno NUMBER(2),
    dname VARCHAR2(14),
    loc VARCHAR2(13));
    I can fill a table of objects from cursor with out select * bulk collect...., row by row
    declare
    TYPE dept2_t IS TABLE of dept2_o;
    dept_o_tab dept2_t:=dept2_t();
    i integer;
    begin
    i:=0;
    dept_o_tab.extend(20);
    for rec in (select * from dept) loop
    i:=i+1;
    dept_o_tab(i):=dept2_o(
    deptno => rec.deptno,
    dname => rec.dname,
    loc =>rec.loc
    end loop;
    for k IN 1..i loop
    dbms_output.put_line(dept_o_tab(k).deptno||' '||dept_o_tab(k).dname||' '||dept_o_tab(k).loc);
    end loop;
    end;
    RESULT
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON
    But I can't fill a table of objects from cursor with select * bulk collect construction ...
    declare
    TYPE dept2_t IS TABLE of dept2_o;
    dept_o_tab dept2_t:=dept2_t();
    begin
    dept_o_tab.extend(20);
    select * bulk collect into dept_o_tab from dept;
    end;
    RESULT
    ORA-06550: line 6, column 39;
    PL/SQL: ORA-00947: not enough values ....
    How can I fill a table of objects from cursor with select * bulk collect???

    create or replace type dept_ot as object (
    deptno NUMBER(2),
    dname VARCHAR2(14),
    loc VARCHAR2(13));
    create table dept
    (deptno number
    ,dname varchar2(14)
    ,loc varchar2(13)
    insert into dept values (10, 'x', 'xx');
    insert into dept values (20, 'y', 'yy');
    insert into dept values (30, 'z', 'zz');
    select dept_ot (deptno, dname, loc)
      from dept
    create type dept_nt is table of dept_ot
    declare
       l_depts dept_nt;
    begin
       select dept_ot (deptno, dname, loc)
         bulk collect
         into l_depts
         from dept
       for i in l_depts.first .. l_depts.last
       loop
          dbms_output.put_line (l_depts(i).deptno);
          dbms_output.put_line (l_depts(i).dname);
          dbms_output.put_line (l_depts(i).loc);    
       end loop;
    end;
    /

  • Setting the name of a new object from a string

    Is there anyway I can set the object name of a newly created
    object from a string?
    eg.
    (the code below generates a compile time error on the
    variable declaration)
    public function addText(newTxt:String, txt:String,
    format:TextFormat):void {
    var
    this[newTxt]:TextField = new TextField();
    this[newTxt].autoSize = TextFieldAutoSize.LEFT;
    this[newTxt].background = true;
    this[newTxt].border = true;
    this[newTxt].defaultTextFormat = format;
    this[newTxt].text = txt;
    addChild(this[newTxt]);
    called using>
    addText("mytxt", "test text", format);
    I could then reference the object later on without using
    array notation using mytxt.border = false; for example
    There are many a time when I want to set the name of a new
    object from a string.
    In this example I have a function that adds a new text object
    to a sprite.
    The problem is, if I call the function more than once then
    two textfield objects will exist, both with the same name. (either
    that or the old one will be overwritten).
    I need a way of setting the name of the textfield object from
    a string.
    using
    var this[newTxt]:TextField = new TextField()
    does not work, If I take the "var" keyword away it thinks it
    a property of the class not an object.
    resulting in >
    ReferenceError: Error #1056: Cannot create property newTxt on
    Box.
    There must be a way somehow to declare a variable that has
    the name that it will take represented in a string.
    Any help would be most welcome
    Thanks

    Using:
    var this[newTxt]:TextField = new TextField()
    is the right approach.
    You can either incrment an instance variable so that the name
    is unique:
    newTxt = "MyName" + _globalCounter;
    var this[newTxt]:TextField = new TextField();
    globalCounter ++;
    Or store the references in an array:
    _globalArray.push(new TextField());
    Tracy

  • Setting bind variable for a view object from the Managed Bean

    Hi,
    i am using JDeveloper 11g, i have to create LOV in the JSF. To show the LOV, it has to populate data using View object and its query parameter need to be sent from the Managed Bean.
    For the View object i want to set the bind variable parameter from the managed bean value. bename is stored in a managed bean (session scope)
    #{beantest.bename}
    But it gives the following exception.
    JBO-29000: Unexpected exception caught:
    org.codehaus.groovy.control.MultipleCompilationErrorsException,msg=startup failed, Script1.groovy: 1: expecting '!',found '{'@ line1, column 2.
    I have followed the link http://kr.forums.oracle.com/forums/thread.jspa?threadID=615474 like Frank wrote on 8.2.2008:
    But steps are not clear.
    How to input the VO bind parameter with Managed bean variable?
    Any Help
    Regards
    Raj
    Edited by: user9928180 on Dec 17, 2008 9:51 AM

    Hi,
    a bind variable in a VO needs to be exposed as an executeWithParams operation in the pageDef file. Just add a new action binding to the pageDef file (context menu) and select the executeWithParams operation on teh VO. Then in the argument field, reference the managed bean property for the value
    Frank

  • How to set date formate dd/mm/yyyy from portal.

    Dear Experts,
    We are implementing ESS/MSS, my query is under ESS applications, date format is showing mm/dd/yyyy, then iam trying to change  user language is English (United Kingdom), from portal end, then its showing dd/mm/yyyy.
    My query is that is there any other way to change date format and how to set user language is English( united Kingdom) for mass users.
    Thanks in advance,
    Regards,
    Mahee.

    Hi,
    Iam trying to upload below format..for mass users....
    [User]
    UID=<employeeid>
    Password=init@123
    FIRST_NAME=xxx
    LAST_NAME=xxx
    group=xxxx
    Language=en_GB
    [User]
    by changing launguage = English (United Kingdom),Now I can able see the require format...dd/mm/yyyy.
    Thanks and Regards,
    Mahee.

  • Set Java Object with Java Long Object from JNI

    Hi,
    i am getting crazy with the jni...
    in Java i have the follwoing:
    public class blabla{
    Object myObject;
    i chose Object cause the return value from native is not known
    in case for a long value i handle it like this :
    //get the Long class
    jclass LongCls = env->FindClass("Ljava/lang/Long;");
    jmethodID jmid = env->GetMethodID(LongCls, "<init>","(J)V");
    //create an Long Object with the long return value
    jobject LongObj = env->NewObject(LongCls,jmid,longreturnvalue);
    //set Long Objekt - doesnt work!(jclazz is the class of the return Object of the blabla class)
    jfid = env->GetFieldID(jclazz, "myObject", "Ljava/lang/Object;");
    env->SetObjectField( returnobjectofblabla,jfid,LongObj );
    the long value is set fine in the Long Object but i cant set the Long Object with the SetObjectField method into the Object myObject.
    Java is shown that the myObject contains a Long Object but the long value of the Long Object is totally wrong and doesnt equal to the long value which has been set.But setting the value works fine- any ideas or solutions?
    Thank you!

    charliess wrote:
    sometimes i really wonder about the answers in this forum - until now i got not one answer that helps me, even i tried to write down the problem very detailed...
    Sometimes I wonder about people who jump onto a site and immediately assume that
    1. They are the most important person in the world
    2. That they deserved the absolute undivided attention of absolute everyone.
    3. That everyone should be absolutely polite to them and provide them with perfect answers.
    4. Feel free to denigrate and posit their own opinion on everything while ignoring anything else that anyone else says.
    5. Expect that everyone else should understand their poorly worded questions.
    Myself I find such individuals extremely amusing. Although they seldom stick around long here. At least not under their original alias.
    plaz tel me how to realise your error checking?example plz
    You start by having at least a basic understanding of C/C++ and java.
    Then you read the JNI documents, all of them, for each method that you are using.
    Then you write code such that it actually reflects the documents. For example you check return types. And probably deal with the possibility that JNI methods might throw exceptions.
    as far as i know the jni methods like getfieldids and so on throw exceptions other like stObject dont do that the just return nothing
    i can see all exceptions in my Java console thats not the Problem, setting the Long Object does not throwing a exception btw->
    Myself I wouldn't expect that a JNI exception would show in the java console. Could I suppose though.
    However nothing so far would suggest that an exception is being thrown. That however doesn't alter the fact that you must still write the code such that it could happen.
    is it possible in general to set an java Long Object created in C(native) into a Object type (Object) overgiven as parameter in my JNI function with the setObject method?
    Is it possible that you could actually follow my previous request and create some code that actually runs instead of cut and pasting whatever you feel like?
    plz answer also with code and examples i did the same for you...No you didn't. You posted something which would not compile and quite possibly doesn't represent your actual code at all.
    And please note that we do not get paid to do this. If you want to pay someone to solve your problem then there are sites for that.
    Paying someone allows you to make all sorts of demands. The more you pay the more people will put up with.
    If you don't want to pay and do in fact want free answers then it will probably be in your interest to
    1. Be polite
    2. Answer the questions that have been asked of you.

  • [Cp] Select object from the timeline and move it on slide with cursor keys ?

    Hello,
    I don't know if there's a shortcut for this :
    Sometimes, it's easier to select an object from the timeline but if you try to use cursor keys to move it, you're in fact moving IN the timeline.
    Is there a way to switch to Slide edition ?
    Thanks.
    PJ

    You can not only use the cursor keys, but also in combination with other keys. And indeed, you have to move the cursor over the stage:
    http://blog.lilybiri.com/shortcut-keys-part-1-moving-and-resizing-obje    about shortcut keys for the stage
    http://blog.lilybiri.com/tiny-timeline-tidbits    about shortcut keys for the Timeline
    There is a list with shortcut keys in the Help, but not complete.

Maybe you are looking for

  • Mac OS X Mountain Lion Boot Drive Issues

    Dear Apple Users, This is my first post here on the Apple Support Communities, so kindly forgive me if I'm repeating a previously asked question. I'd like to create a Mac OS X Mountain Lion USB Boot Drive and of course I already have it installed on

  • Smart switch app problem

    I have been trying to use the Samsung app, Smart Switch Mobil to transfer a lot of contacts, photos etc from my Galaxy S3 to my new Galaxy S5.  I have the app on both phones and have followed the directions exactly.  The files begin to transfer, but

  • Ipod touch won't open in itunes since upgrading to snow leopard

    I just loaded snow leopard, and upgraded it to 10.6.3. Since this upgrade, itunes does not load my ipod when it's plugged into the usb port. I have reset the ipod, restarted my macbook. I'd appreciate any other tips or suggestions for getting itunes

  • Bookmarking addresses in google maps

    how do i save my own address, or any other addresses into the bookmark of google maps? and also, some businesses are not showing when searching in google map. can you add your own point of interest? thanks

  • I can't reenable Norton - any way to enable?

    Firefox disabled Norton and will not allow me to enable it per instructions provided by Firefox.